{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f07fec1b-a4cf-4c98-8bd5-d6e327de3b63",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:37:57.145318Z",
     "iopub.status.busy": "2024-11-13T07:37:57.144850Z",
     "iopub.status.idle": "2024-11-13T07:37:59.642116Z",
     "msg_id": "f0a8f875-5ca4-4552-8176-c5d009611b97",
     "shell.execute_reply": "2024-11-13T07:37:59.641354Z",
     "shell.execute_reply.started": "2024-11-13T07:37:57.145285Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import joblib\n",
    "import numpy as np\n",
    "import lightgbm as lgb\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import classification_report, accuracy_score, precision_score, recall_score, f1_score, precision_recall_curve,  roc_curve, auc, roc_auc_score\n",
    "from sklearn.model_selection import StratifiedKFold, train_test_split\n",
    "import gc\n",
    "import datetime\n",
    "import os\n",
    "from lightgbm import early_stopping, log_evaluation\n",
    "from catboost import CatBoostClassifier, Pool\n",
    "from sklearn import preprocessing\n",
    "import random\n",
    "import xgboost as xgb\n",
    "from xgboost import DMatrix\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0c4fbab1-935a-421a-a165-6ddf337556a8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:37:59.643808Z",
     "iopub.status.busy": "2024-11-13T07:37:59.643469Z",
     "iopub.status.idle": "2024-11-13T07:37:59.656880Z",
     "msg_id": "3c98cf45-58f4-45f3-b2e6-4df0475a2c8e",
     "shell.execute_reply": "2024-11-13T07:37:59.656113Z",
     "shell.execute_reply.started": "2024-11-13T07:37:59.643780Z"
    }
   },
   "outputs": [],
   "source": [
    "'''\n",
    "df_behav: 数据表\n",
    "key_col: ID列，唯一标识列\n",
    "fea_list:类别型特征列表\n",
    "threshold:阈值，<阈值就编码为一类\n",
    "'''\n",
    "def get_object_code1(df_behav, fea_list):\n",
    "    for fea in fea_list:\n",
    "        xx = sorted(list(df_behav[fea].value_counts().index), reverse=True)\n",
    "        dictav = dict(zip(xx, list(i for i in range(len(xx)))))\n",
    "        df_behav[fea] = df_behav[fea].map(dictav)\n",
    "    return df_behav\n",
    "\n",
    "def get_object_code3(df_behav, key_col,fea_list,threshold):\n",
    "    for fea in fea_list:\n",
    "        # 以['pid','date',fea]为组，取不重复的记录(每客户，每天)\n",
    "        df_behav_v1 = df_behav.sort_values(by=[key_col,fea], ascending=False,inplace=False).drop_duplicates(subset=[key_col,fea], keep='first',inplace=False)\n",
    "        # 在(每客户，每天)不重复（fea）的记录中计数排序\n",
    "        total = df_behav_v1[fea].count()\n",
    "        counts = df_behav_v1[fea].value_counts()\n",
    "        frequencies = counts / total\n",
    "        dict1 = {} #编码字典\n",
    "        dict2 = {} #计数字典\n",
    "        for obj,freq in frequencies.items():\n",
    "            if freq<threshold:\n",
    "                dict1[obj] = 1\n",
    "            else:\n",
    "                dict1[obj] = len(dict1)+2\n",
    "            dict2[obj] = counts.get(obj,0)\n",
    "        nan_count = df_behav_v1[fea].isna().sum()\n",
    "        nan_freq = nan_count/len(df_behav_v1)\n",
    "        if nan_freq>=threshold:\n",
    "            dict1[np.nan] = len(dict1)+1 \n",
    "            dict2[np.nan] = nan_count\n",
    "        else:\n",
    "            dict1[np.nan] = 1\n",
    "            dict2[np.nan] = 0\n",
    "        \n",
    "        df_behav[fea+'_id'] = df_behav[fea].map(dict1)\n",
    "        df_behav[fea+'_cnts'] = df_behav[fea].map(dict2)\n",
    "        del df_behav[fea]\n",
    "    return df_behav\n",
    "\n",
    "\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "def label_encode_categorical(data, columns):\n",
    "    le = LabelEncoder()\n",
    "    for col in columns:\n",
    "        data[col] = le.fit_transform(data[col])\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "4c94a6ab-b11f-4c3f-a18a-a708306a67a5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:16:34.178274Z",
     "iopub.status.busy": "2024-11-13T09:16:34.177741Z",
     "iopub.status.idle": "2024-11-13T09:16:34.295433Z",
     "msg_id": "0d47c0f5-aea9-4b6f-b52b-ab2084f1cb54",
     "shell.execute_reply": "2024-11-13T09:16:34.294597Z",
     "shell.execute_reply.started": "2024-11-13T09:16:34.178242Z"
    }
   },
   "outputs": [],
   "source": [
    "'''\n",
    "train榜只有20040414这一天的数据\n",
    "A榜 20040514一天数据\n",
    "'''\n",
    "\n",
    "\n",
    "path = r'../contest'\n",
    "df_A = pd.read_csv(path+r'/A/GTGSH_NATURE_A.csv')\n",
    "df_train = pd.read_csv(path+r'/train/GTGSH_NATURE_TRAIN.csv')\n",
    "\n",
    "df_ALL_A = pd.concat([df_train,df_A],axis=0).reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "28b01c12-8b6e-448e-a0c3-7d1f26e27a8a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:16:34.418373Z",
     "iopub.status.busy": "2024-11-13T09:16:34.417708Z",
     "iopub.status.idle": "2024-11-13T09:16:34.461515Z",
     "msg_id": "151c2fb1-4533-4388-9d3a-2fac36c762c6",
     "shell.execute_reply": "2024-11-13T09:16:34.460782Z",
     "shell.execute_reply.started": "2024-11-13T09:16:34.418344Z"
    }
   },
   "outputs": [],
   "source": [
    "def age_group(age):\n",
    "    if 0 <= age <= 22:\n",
    "        return 1\n",
    "    elif 22 < age <= 65:\n",
    "        return 2\n",
    "    else:\n",
    "        return 3\n",
    "df_ALL_A['age_group'] = df_ALL_A['NTRL_CUST_AGE'].apply(age_group)\n",
    "df_ALL_A['age_square'] = df_ALL_A['NTRL_CUST_AGE'] ** 2\n",
    "\n",
    "df_ALL_A['age_log'] = np.log1p(df_ALL_A['NTRL_CUST_AGE']) \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "88020397-bede-4353-b314-054b83fffb02",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:16:34.757514Z",
     "iopub.status.busy": "2024-11-13T09:16:34.757116Z",
     "iopub.status.idle": "2024-11-13T09:16:34.777723Z",
     "msg_id": "adeb7390-98bf-49cc-bc71-2e09bd1f9dfc",
     "shell.execute_reply": "2024-11-13T09:16:34.777047Z",
     "shell.execute_reply.started": "2024-11-13T09:16:34.757487Z"
    }
   },
   "outputs": [],
   "source": [
    "'''\n",
    "SEX:label_encode\n",
    "rank:频率，顺序编码\n",
    "IND：不操作\n",
    "'''\n",
    "df_ALL_A =  label_encode_categorical(df_ALL_A,['NTRL_CUST_SEX_CD'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "f859c15c-2fb9-49f8-953c-c655368c927e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:16:35.892715Z",
     "iopub.status.busy": "2024-11-13T09:16:35.892271Z",
     "iopub.status.idle": "2024-11-13T09:16:36.068400Z",
     "msg_id": "68d09cb8-2d5c-4431-9fd3-704b482e71ba",
     "shell.execute_reply": "2024-11-13T09:16:36.067629Z",
     "shell.execute_reply.started": "2024-11-13T09:16:35.892685Z"
    }
   },
   "outputs": [],
   "source": [
    "df_ALL_A = get_object_code3(df_ALL_A, 'CUST_NO',['NTRL_RANK_CD'],threshold=0.05)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "207c1ccb-f6f8-436d-9280-338315f1efe8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:16:36.147447Z",
     "iopub.status.busy": "2024-11-13T09:16:36.146821Z",
     "iopub.status.idle": "2024-11-13T09:16:36.564744Z",
     "msg_id": "17dfc4a2-4376-4acc-8457-b451d5cadd15",
     "shell.execute_reply": "2024-11-13T09:16:36.564006Z",
     "shell.execute_reply.started": "2024-11-13T09:16:36.147419Z"
    }
   },
   "outputs": [],
   "source": [
    "# df_ALL_A.drop(columns=['DATA_DAT'],inplace=True)\n",
    "new_columns = ['NATURE_'+col1 if col1!='CUST_NO' else col1 for col1 in df_ALL_A.columns]\n",
    "df_ALL_A.columns = new_columns\n",
    "df_ALL_A.to_csv(r'../process/NATURE_1.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "2bd2c20c-ae8c-4dd6-a1d6-00140b0816f5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:38:07.327708Z",
     "iopub.status.busy": "2024-11-13T07:38:07.327173Z",
     "iopub.status.idle": "2024-11-13T07:38:09.261872Z",
     "msg_id": "1c896700-2aa1-4d8e-b3f2-a246d7e09559",
     "shell.execute_reply": "2024-11-13T07:38:09.260997Z",
     "shell.execute_reply.started": "2024-11-13T07:38:07.327676Z"
    }
   },
   "outputs": [],
   "source": [
    "# ---------------------   拼接 IBTF ---------------\n",
    "train_path = '../../../contest/train/'\n",
    "stage_path = '../../../contest/A/'\n",
    "stage = 'A'\n",
    "TR_IBTF_train = pd.read_csv('../contest/train/GTGSH_TR_IBTF_TRAIN.csv')\n",
    "TR_IBTF_test = pd.read_csv('../contest/A/GTGSH_TR_IBTF_A.csv')\n",
    "TR_IBTF_train = TR_IBTF_train.drop(['DATA_DAT'],axis=1)\n",
    "TR_IBTF_test = TR_IBTF_test.drop(['DATA_DAT'],axis=1)\n",
    "df_IBTF_ALL = pd.concat([TR_IBTF_train,TR_IBTF_test],axis=0).reset_index(drop=True)\n",
    "\n",
    "df_ALL_A_concat = pd.merge(df_ALL_A,df_IBTF_ALL,on='CUST_NO')\n",
    "\n",
    "columns = df_IBTF_ALL.columns.tolist()\n",
    "dict =  {}\n",
    "for col in columns:\n",
    "    if col not in ['CUST_NO']:\n",
    "        dict[col] = ['mean']\n",
    "def groupby_agg(df,key_cols,dic,prefix):\n",
    "    agg_df1 = df.groupby(key_cols).agg(dic)\n",
    "    agg_df1.columns = [prefix+'_'+col1+'_'+col2 for col1,col2 in agg_df1.columns]\n",
    "    return agg_df1\n",
    "agg_df = groupby_agg(df_ALL_A_concat,['NATURE_age_group'],dict,'NATURE_IBTL_')\n",
    "\n",
    "df_ALL_A_concat = pd.merge(df_ALL_A_concat,agg_df,on='NATURE_age_group')\n",
    "\n",
    "df_ALL_A_concat[['CUST_NO','NATURE_IBTL__IBTF_TR_CNT_mean', 'NATURE_IBTL__IBTF_MOTH_TR_CNT_mean',\n",
    "       'NATURE_IBTL__IBTF_SEAN_TR_CNT_mean',\n",
    "       'NATURE_IBTL__IBTF_YEAR_TR_CNT_mean',\n",
    "       'NATURE_IBTL__IBTF_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL__IBTF_MOTH_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL__IBTF_SEAN_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL__IBTF_YEAR_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL__IBTF_TR_AMT_mean', 'NATURE_IBTL__IBTF_MOTH_TR_AMT_mean',\n",
    "       'NATURE_IBTL__IBTF_SEAN_TR_AMT_mean',\n",
    "       'NATURE_IBTL__IBTF_YEAR_TR_AMT_mean',\n",
    "       'NATURE_IBTL__IBTF_TR_AMT_IN_mean',\n",
    "       'NATURE_IBTL__IBTF_MOTH_TR_AMT_IN_mean',\n",
    "       'NATURE_IBTL__IBTF_SEAN_TR_AMT_IN_mean',\n",
    "       'NATURE_IBTL__IBTF_YEAR_TR_AMT_IN_mean']].to_csv(r'../process/NATURE_IBTF_1.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "edbd6337-85c6-4f79-b1c9-f486ea77b499",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:38:09.263853Z",
     "iopub.status.busy": "2024-11-13T07:38:09.263443Z",
     "iopub.status.idle": "2024-11-13T07:38:10.962987Z",
     "msg_id": "a13b8b92-9ce8-4803-81db-80627b2a097d",
     "shell.execute_reply": "2024-11-13T07:38:10.962103Z",
     "shell.execute_reply.started": "2024-11-13T07:38:09.263825Z"
    }
   },
   "outputs": [],
   "source": [
    "columns = df_IBTF_ALL.columns.tolist()\n",
    "dict =  {}\n",
    "for col in columns:\n",
    "    if col not in ['CUST_NO']:\n",
    "        dict[col] = ['mean'] # 这是原本_2的\n",
    "def groupby_agg(df,key_cols,dic,prefix):\n",
    "    agg_df1 = df.groupby(key_cols).agg(dic)\n",
    "    agg_df1.columns = [prefix+'_'+col1+'_'+col2 for col1,col2 in agg_df1.columns]\n",
    "    return agg_df1\n",
    "agg_df = groupby_agg(df_ALL_A_concat,['NATURE_age_group','NATURE_NTRL_CUST_SEX_CD'],dict,'NATURE_IBTL_SEX_AGE') # 这是2的\n",
    "df_ALL_A_concat = pd.merge(df_ALL_A_concat,agg_df,on=['NATURE_age_group','NATURE_NTRL_CUST_SEX_CD'])\n",
    "\n",
    "df_ALL_A_concat[['CUST_NO','NATURE_IBTL_SEX_AGE_IBTF_TR_CNT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_MOTH_TR_CNT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_SEAN_TR_CNT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_YEAR_TR_CNT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_MOTH_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_SEAN_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_YEAR_TR_CNT_IN_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_TR_AMT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_MOTH_TR_AMT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_SEAN_TR_AMT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_YEAR_TR_AMT_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_TR_AMT_IN_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_MOTH_TR_AMT_IN_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_SEAN_TR_AMT_IN_mean',\n",
    "       'NATURE_IBTL_SEX_AGE_IBTF_YEAR_TR_AMT_IN_mean']].to_csv(r'../process/NATURE_IBTF_2.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c2223cfd-ee25-468f-a579-6a2756efa086",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:38:10.964460Z",
     "iopub.status.busy": "2024-11-13T07:38:10.964174Z",
     "iopub.status.idle": "2024-11-13T07:38:11.620366Z",
     "msg_id": "bc354bd4-cab0-45c6-a19a-631285502762",
     "shell.execute_reply": "2024-11-13T07:38:11.619529Z",
     "shell.execute_reply.started": "2024-11-13T07:38:10.964434Z"
    }
   },
   "outputs": [],
   "source": [
    "'''\n",
    "train榜只有20040414这一天的数据\n",
    "A榜 20040514一天数据\n",
    "'''\n",
    "del dict\n",
    "\n",
    "path = r'../contest'\n",
    "df_A = pd.read_csv(path+r'/A/GTGSH_ENTINFO_BASIC_INFO_A.csv')\n",
    "df_train = pd.read_csv(path+r'/train/GTGSH_ENTINFO_BASIC_INFO_TRAIN.csv')\n",
    "\n",
    "df_ALL_A = pd.concat([df_train,df_A],axis=0).reset_index(drop=True)\n",
    "\n",
    "df_ALL_A = get_object_code1(df_ALL_A,['ENTSTATUS_CD', 'INDS_CD','REGPROVIN_CD', 'ENTTYPE_CD']) # 进行顺序编码\n",
    "for col in ['ENTSTATUS_CD', 'INDS_CD','REGPROVIN_CD', 'ENTTYPE_CD']:\n",
    "    df_ALL_A[col].fillna(df_ALL_A[col].max()+1,inplace=True)\n",
    "df_ALL_A['ESDATE'].fillna(19000101.0,inplace=True)\n",
    "df_ALL_A.drop(columns=['DATA_DAT'],inplace=True)\n",
    "new_columns = ['ENTINFO_'+col1 if col1!='CUST_NO' else col1 for col1 in df_ALL_A.columns]\n",
    "df_ALL_A.columns = new_columns\n",
    "df_ALL_A.to_csv(r'../process/ENTINFO_1.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c78119f8-c247-4be2-87c9-48a41211b64a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:38:11.622753Z",
     "iopub.status.busy": "2024-11-13T07:38:11.622105Z",
     "iopub.status.idle": "2024-11-13T07:38:12.834444Z",
     "msg_id": "e5f9e49d-3852-4f95-af01-caa051df6d42",
     "shell.execute_reply": "2024-11-13T07:38:12.833589Z",
     "shell.execute_reply.started": "2024-11-13T07:38:11.622724Z"
    }
   },
   "outputs": [],
   "source": [
    "def make_year_diff(df):\n",
    "    df['ENTINFO_ESDATE'] = df['ENTINFO_ESDATE'].astype(str)\n",
    "    df['ENTINFO_ESDATE'] = df['ENTINFO_ESDATE'].str[0:8]\n",
    "    df['ENTINFO_ESDATE'] = df['ENTINFO_ESDATE'].apply(lambda x: '19000101' if (x == 'nan') else x)\n",
    "    df['成立时间长短'] = 2004 - df['ENTINFO_ESDATE'].str[0:4].astype(int)\n",
    "    df['ENTIINFO_IStwo'] = df['成立时间长短'].apply(lambda x: 1 if x>=2 else 0)\n",
    "    return df\n",
    "df_ALL_A = make_year_diff(df_ALL_A)\n",
    "# 2 加上频率变编码\n",
    "df_ALL_A['ENTINFO_ISNANCOUNT'] = df_ALL_A.isnull().sum(axis=1)\n",
    "df_ALL_A = get_object_code3(df_ALL_A, 'CUST_NO',['ENTINFO_ENTSTATUS_CD', 'ENTINFO_INDS_CD','ENTINFO_REGPROVIN_CD', 'ENTINFO_ENTTYPE_CD'],0.05)\n",
    "\n",
    "'''\n",
    "下降了！！！！！！！！！！！！\n",
    "'''\n",
    "dic = {'ENTINFO_REGPROVIN_CD_cnts':'ENTINFO_REGPROVIN_CD_cnts',\n",
    "       'ENTINFO_ENTTYPE_CD_cnts':'ENTINFO_ENTTYPE_CD_cnts',\n",
    "       'ENTINFO_INDS_CD_cnts':'ENTINFO_INDS_CD_cnts',\n",
    "       'ENTINFO_ENTSTATUS_CD_cnts':'ENTINFO_ENTSTATUS_CD_cnts'}\n",
    "df_ALL_A = df_ALL_A.rename(columns=dic)\n",
    "\n",
    "df_ALL_A[['CUST_NO','ENTINFO_ISNANCOUNT','ENTINFO_REGPROVIN_CD_cnts','ENTINFO_ENTTYPE_CD_cnts','ENTINFO_INDS_CD_cnts','ENTINFO_ENTSTATUS_CD_cnts']].to_csv(r'../process/ENTINFO_3.csv',index=False)\n",
    "\n",
    "df_ALL_A[['CUST_NO','成立时间长短','ENTIINFO_IStwo']].to_csv(r'../process/ENTIINFO_ESDATE_1.csv',index=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6cbe6d61-4e37-4646-8e1e-a3f5a9bbede6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:38:12.835771Z",
     "iopub.status.busy": "2024-11-13T07:38:12.835505Z",
     "iopub.status.idle": "2024-11-13T07:38:12.846687Z",
     "msg_id": "82b2cc87-9e8f-484c-a8af-868bc8f89f25",
     "shell.execute_reply": "2024-11-13T07:38:12.846003Z",
     "shell.execute_reply.started": "2024-11-13T07:38:12.835745Z"
    }
   },
   "outputs": [],
   "source": [
    "'''\n",
    "----------------------------------------  target encode:k代表fold的次数，train,test是对应的数据 ---------------------------------------------\n",
    "'''\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "def kfold_stats_feature(train, test, feats, k,label='label'):\n",
    "    folds = StratifiedKFold(n_splits=k, shuffle=True, random_state=24)  # 这里最好和后面模型的K折交叉验证保持一致\n",
    "\n",
    "    train['fold'] = None\n",
    "    for fold_, (trn_idx, val_idx) in enumerate(folds.split(train, train[label])):\n",
    "        train.loc[val_idx, 'fold'] = fold_\n",
    "\n",
    "    kfold_features = []\n",
    "    for feat in feats:\n",
    "        nums_columns = [label]\n",
    "        for f in nums_columns:\n",
    "            colname = feat + '_' + f + '_kfold_mean'\n",
    "            kfold_features.append(colname)\n",
    "            train[colname] = None\n",
    "            for fold_, (trn_idx, val_idx) in enumerate(folds.split(train, train[label])):\n",
    "                tmp_trn = train.iloc[trn_idx]\n",
    "                order_label = tmp_trn.groupby([feat])[f].mean()\n",
    "                tmp = train.loc[train.fold == fold_, [feat]]\n",
    "                train.loc[train.fold == fold_, colname] = tmp[feat].map(order_label)\n",
    "                # fillna\n",
    "                global_mean = train[f].mean()\n",
    "                train.loc[train.fold == fold_, colname] = train.loc[train.fold == fold_, colname].fillna(global_mean)\n",
    "            train[colname] = train[colname].astype(float)\n",
    "\n",
    "        for f in nums_columns:\n",
    "            colname = feat + '_' + f + '_kfold_mean'\n",
    "            test[colname] = None\n",
    "            order_label = train.groupby([feat])[f].mean()\n",
    "            test[colname] = test[feat].map(order_label)\n",
    "            # fillna\n",
    "            global_mean = train[f].mean()\n",
    "            test[colname] = test[colname].fillna(global_mean)\n",
    "            test[colname] = test[colname].astype(float)\n",
    "    del train['fold']\n",
    "    return train, test\n",
    "\n",
    "\n",
    "# train1,test1 = kfold_stats_feature(df_train_label,df_test_label,['PAGE_TITLE','REFERRER_TITLE','MODEL_NAME'],5,label='FLAG')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "acb25ed2-1a56-4728-bca4-76e383c63741",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:38:12.848522Z",
     "iopub.status.busy": "2024-11-13T07:38:12.848080Z",
     "iopub.status.idle": "2024-11-13T07:38:14.090967Z",
     "msg_id": "b34e3ead-c71a-472b-9eb2-31512198e97c",
     "shell.execute_reply": "2024-11-13T07:38:14.090109Z",
     "shell.execute_reply.started": "2024-11-13T07:38:12.848496Z"
    }
   },
   "outputs": [],
   "source": [
    "path = r'../contest'\n",
    "X_test = pd.read_csv(path+r'/A/GTGSH_TARGET_A.csv')\n",
    "X_test['FLAG'] = 0\n",
    "X_train = pd.read_csv(path+r'/train/GTGSH_TARGET_TRAIN.csv')\n",
    "\n",
    "df_A = pd.read_csv(path+r'/A/GTGSH_ENTINFO_BASIC_INFO_A.csv')\n",
    "df_train = pd.read_csv(path+r'/train/GTGSH_ENTINFO_BASIC_INFO_TRAIN.csv')\n",
    "\n",
    "df_ALL_A = pd.concat([df_train,df_A],axis=0).reset_index(drop=True)\n",
    "\n",
    "# --------------- 这里开始是entiinfo表------------------\n",
    "\n",
    "tmp4 = df_ALL_A['INDS_CD'].value_counts()\n",
    "save_col4 = tmp4[tmp4>10].index.tolist()\n",
    "df_ALL_A.loc[~(df_ALL_A['INDS_CD'].isin(save_col4)),'INDS_CD']='other'\n",
    "\n",
    "df_train_en  = df_ALL_A[df_ALL_A['CUST_NO'].isin(X_train['CUST_NO'])]\n",
    "df_test_en = df_ALL_A[~df_ALL_A['CUST_NO'].isin(X_train['CUST_NO'])]\n",
    "df_train_en_label = pd.merge(df_train_en,X_train,on='CUST_NO',how='left')\n",
    "df_test_en_label = pd.merge(df_test_en,X_test,on='CUST_NO',how='left')\n",
    "df_train_en_label,df_test_en_label = kfold_stats_feature(df_train_en_label,df_test_en_label,['REGPROVIN_CD','INDS_CD'],5,label='FLAG')\n",
    "df_ALL_en_label = pd.concat([df_train_en_label[['CUST_NO','REGPROVIN_CD_FLAG_kfold_mean','INDS_CD_FLAG_kfold_mean']],df_test_en_label[['CUST_NO','REGPROVIN_CD_FLAG_kfold_mean','INDS_CD_FLAG_kfold_mean']]],axis=0).reset_index(drop=True)\n",
    "df_ALL_en_label.to_csv(r'../process/ENTIINFO_TARGETENCODE_1.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0569e5d3-5e5c-4475-9078-1b5e00028fd8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:38:14.093277Z",
     "iopub.status.busy": "2024-11-13T07:38:14.092695Z",
     "iopub.status.idle": "2024-11-13T07:39:49.283055Z",
     "msg_id": "ca6faa23-4168-460b-9c27-4af2ae6e7244",
     "shell.execute_reply": "2024-11-13T07:39:49.282152Z",
     "shell.execute_reply.started": "2024-11-13T07:38:14.093248Z"
    }
   },
   "outputs": [],
   "source": [
    "stage = 'A'\n",
    "root = '../contest'\n",
    "df_train = pd.read_csv(os.path.join(root, 'train/GTGSH_TR_APS_DTL_TRAIN.csv'))\n",
    "\n",
    "df_test = pd.read_csv(os.path.join(root, '{}/GTGSH_TR_APS_DTL_{}.csv'.format(stage, stage)))\n",
    "\n",
    "'''\n",
    "类别型特征判断\n",
    "'''\n",
    "category_columns = [col for col in df_train.columns if df_train[col].dtype=='object']\n",
    "df_train[category_columns].nunique()\n",
    "\n",
    "def get_aps_days_to_now(df):\n",
    "    df[\"date\"] = pd.to_datetime(df[\"APSDTRDAT\"], format=\"%Y%m%d\")\n",
    "    df_months_to_now = (df[\"date\"].max() - df[\"date\"]).dt.days\n",
    "    df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "    df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "    df[\"date_days_to_now\"] = df_months_to_now  # 距今天数\n",
    "    \n",
    "    return df\n",
    "df_train = get_aps_days_to_now(df_train)\n",
    "df_test = get_aps_days_to_now(df_test)\n",
    "\n",
    "'''\n",
    "------------------------------------------ 通过 groupby 构建特征 ---------------------------------------------\n",
    "一阶段构建特征时用的，输入数值特征，类别特征，日期特征，自动构建agg特征，其中prefix是前缀词\n",
    "数值型：max,min,sum,std,mean  类别型：nunique,mode  日期型: max,min,通过process_date_features函数进行max-min日期差计算\n",
    "'''\n",
    "def aggregate_features(df, key, num_features, cate_features, date_features,prefix):\n",
    "    agg_dict = {}\n",
    "    for col in num_features:\n",
    "        agg_dict[col] = ['mean','std','max','min','sum','nunique','median','skew']\n",
    "    for col in cate_features:\n",
    "        if col.endswith('_ids'):  # 可自行灵活修改\n",
    "            agg_dict[col] = ['nunique']\n",
    "        else:  # 可自行灵活修改\n",
    "            agg_dict[col] = []\n",
    "        def mode(x):\n",
    "            try:\n",
    "                return x.mode().iloc[0]\n",
    "            except IndexError:\n",
    "                return None\n",
    "        agg_dict[col].append(('mode',mode))\n",
    "    for col in date_features:\n",
    "        agg_dict[col] = ['max','min']\n",
    "    # 计算每个组的数量\n",
    "    # def max_amt_diff(group):\n",
    "    #     max_amt_index = group['APSDTRAMT'].idxmax()\n",
    "    #     max_amt_datediff = group.loc[max_amt_index,'date_days_to_now']\n",
    "    #     return max_amt_datediff\n",
    "\n",
    "    # def min_amt_diff(group):\n",
    "    #     min_amt_index = group['APSDTRAMT'].idxmin()\n",
    "    #     min_amt_datediff = group.loc[min_amt_index,'date_days_to_now']\n",
    "    #     return min_amt_datediff\n",
    "\n",
    "    # min_amount = df.groupby('CUST_NO').apply(min_amt_diff).reset_index(name='APS_min_amt_datediff')\n",
    "    # max_amount = df.groupby('CUST_NO').apply(max_amt_diff).reset_index(name='APS_max_amt_datediff')\n",
    "    \n",
    "    \n",
    "    count_series = df.groupby(key).size().rename(prefix + '_count')\n",
    "    group_df = df.groupby(key).agg(agg_dict)\n",
    "    group_df.columns = [prefix+'_'+col1+'_'+col2 for col1,col2 in group_df.columns]\n",
    "    \n",
    "    group_df = group_df.join(count_series)\n",
    "    # group_df = pd.merge(group_df,min_amount,on='CUST_NO')\n",
    "    # group_df = pd.merge(group_df,max_amount,on='CUST_NO')\n",
    "    return group_df\n",
    "\n",
    "'''\n",
    "----------------------------------------------对类别型特征进行nan值填充-----------------------------------------------\n",
    "'''\n",
    "def label_encode_with_nan_handling(df, category_columns):\n",
    "    le = LabelEncoder()\n",
    "    \n",
    "    for col in category_columns:\n",
    "        # 如果存在缺失值，则用特定的标记替换\n",
    "        if df[col].isnull().any():\n",
    "            df[col] = df[col].fillna('-999')\n",
    "        \n",
    "        # 使用LabelEncoder进行编码\n",
    "        le.fit(df[col])\n",
    "        df[col] = le.transform(df[col])\n",
    "        \n",
    "        # 如果存在缺失值，则将标记'-999'替换为-999\n",
    "        if df[col].isnull().any():\n",
    "            df[col] = df[col].replace({'-999': -999})\n",
    "    \n",
    "    return df\n",
    "data = pd.concat([df_train, df_test])\n",
    "# 对类别型特征进行填充\n",
    "data = label_encode_with_nan_handling(data, ['APSDTRCOD', 'APSDABS', 'APSDTRCHL'])\n",
    "# 对三类特征进行groupby agg\n",
    "agg_data = aggregate_features(data, 'CUST_NO', ['APSDTRAMT'],['APSDTRCOD', 'APSDABS', 'APSDTRCHL'], ['date_days_to_now'], 'aps')\n",
    "agg_data.reset_index().to_csv(r'../process/APS_1_1.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2c14047d-75b6-4e0f-8d5a-37fce0f8dcd2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:39:49.284490Z",
     "iopub.status.busy": "2024-11-13T07:39:49.284202Z",
     "iopub.status.idle": "2024-11-13T07:41:26.770743Z",
     "msg_id": "14d62091-1fee-48f1-93c4-dfaec28f2a82",
     "shell.execute_reply": "2024-11-13T07:41:26.769736Z",
     "shell.execute_reply.started": "2024-11-13T07:39:49.284463Z"
    }
   },
   "outputs": [],
   "source": [
    "from datetime import datetime\n",
    "abs_head3_list = df_train.APSDABS.value_counts()[:3].index # 出现大于500000次\n",
    "abs_head9_list = df_train.APSDABS.value_counts()[:10].index # 出现大于100000次\n",
    "aps_cd_list = df_train.APSDTRCOD.value_counts()[:30].index # 出现大于10000次\n",
    "chl_head17_list = df_train.APSDTRCHL.value_counts()[:15].index # 出现大于10000次\n",
    "def prepro(df, end_date):\n",
    "    abs_df = df.copy()\n",
    "    \n",
    "    df['APSDTRDAT'] = pd.to_datetime(df['APSDTRDAT'], format='%Y%m%d')\n",
    "    # df['APSDTRAMT'] = df.APSDTRAMT.apply(lambda x: round(pow(x/3.12,3),2))\n",
    "    df['abs_amt'] = df['APSDTRAMT'].apply(lambda x: abs(x))\n",
    "    df = df.groupby('CUST_NO').agg(\n",
    "        aps_sum_amt = ('APSDTRAMT', 'sum'),\n",
    "        aps_sum_abs_amt = ('abs_amt', 'sum'),\n",
    "        aps_sum_avg_amt = ('APSDTRAMT', 'mean'),\n",
    "        aps_max_amt = ('APSDTRAMT', 'max'),\n",
    "        aps_min_amt = ('APSDTRAMT', 'min'),\n",
    "        aps_last_diff = ('APSDTRDAT', 'max'),\n",
    "        aps_code_cnt = ('APSDTRCOD', 'nunique'),\n",
    "        aps_chl_cnt = ('APSDTRCHL', 'nunique'),\n",
    "        aps_abs_cnt = ('APSDABS', 'nunique'),\n",
    "    )\n",
    "    df['aps_last_diff'] = (end_date - df['aps_last_diff']).dt.days\n",
    "    \n",
    "    # 不同交易摘要的最大金额\n",
    "    for i, abs3 in enumerate(abs_head3_list):\n",
    "        tmp_df = abs_df[abs_df['APSDABS']==abs3].groupby('CUST_NO').agg({'APSDTRAMT':'max'}).rename(columns={'APSDTRAMT':'aps_APSDABS_APSDTRAMT'+str(i+1)+'_maxamt'})\n",
    "        df = df.merge(tmp_df, how='left', on='CUST_NO')\n",
    "    \n",
    "    # 不同交易摘要的最小金额\n",
    "    for i, abs3 in enumerate(abs_head3_list):\n",
    "        tmp_df = abs_df[abs_df['APSDABS']==abs3].groupby('CUST_NO').agg({'APSDTRAMT':'min'}).rename(columns={'APSDTRAMT':'aps_APSDABS_APSDTRAMT'+str(i+1)+'_minamt'})\n",
    "        df = df.merge(tmp_df, how='left', on='CUST_NO')\n",
    "\n",
    "    # 不同交易摘要的出现次数\n",
    "    for i, abs9 in enumerate(abs_head9_list):\n",
    "        tmp_df = abs_df[abs_df['APSDABS']==abs9].groupby('CUST_NO').agg({'APSDTRAMT':'count'}).rename(columns={'APSDTRAMT':'aps_APSDABS_APSDTRAMT'+str(i+1)+'_cnt'})\n",
    "        df = df.merge(tmp_df, how='left', on='CUST_NO')\n",
    "\n",
    "    # 交易码是否出现过\n",
    "    for i, cd in enumerate(aps_cd_list):\n",
    "        col_name = 'APSDTRCOD'+str(i+1)+'_ind'\n",
    "        tmp_df = abs_df[abs_df['APSDTRCOD']==cd].groupby('CUST_NO').head(1)\n",
    "        tmp_df[col_name] = 1\n",
    "        df = df.merge(tmp_df[['CUST_NO', col_name]], how='left', on='CUST_NO')\n",
    "        df[col_name] = df[col_name].fillna(0)\n",
    "\n",
    "    # 交易渠道是否出现过\n",
    "    for i, chl in enumerate(chl_head17_list):\n",
    "        col_name = 'APSDTRCHL'+str(i+1)+'_ind'\n",
    "        tmp_df = abs_df[abs_df['APSDTRCHL']==chl].groupby('CUST_NO').head(1)\n",
    "        tmp_df[col_name] = 1\n",
    "        df = df.merge(tmp_df[['CUST_NO', col_name]], how='left', on='CUST_NO')\n",
    "        df[col_name] = df[col_name].fillna(0)\n",
    "\n",
    "    return df\n",
    "\n",
    "end_date_train = datetime(2004,4,14)\n",
    "end_date_test = datetime(2004,5,14)\n",
    "df_train_all = prepro(df_train, end_date_train)\n",
    "df_test_all = prepro(df_test, end_date_test)\n",
    "\n",
    "df_ALL_A = pd.concat([df_train_all, df_test_all])\n",
    "df_ALL_A.to_csv(r'../process/APS_2.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "c51db8b6-7381-4099-bd96-e82aa97fdafb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:41:26.773270Z",
     "iopub.status.busy": "2024-11-13T07:41:26.772807Z",
     "iopub.status.idle": "2024-11-13T07:43:17.404456Z",
     "msg_id": "e9ebf03b-c7c4-420a-87ef-6dbfbb640a79",
     "shell.execute_reply": "2024-11-13T07:43:17.403588Z",
     "shell.execute_reply.started": "2024-11-13T07:41:26.773241Z"
    }
   },
   "outputs": [],
   "source": [
    "path = r'../contest'\n",
    "X_test = pd.read_csv(path+r'/A/GTGSH_TARGET_A.csv')\n",
    "X_test['FLAG'] = np.nan\n",
    "X_train = pd.read_csv(path+r'/train/GTGSH_TARGET_TRAIN.csv')\n",
    "end_date_train = datetime(2004,4,14)\n",
    "end_date_test = datetime(2004,5,14)\n",
    "df_train = pd.read_csv(os.path.join(root, 'train/GTGSH_TR_APS_DTL_TRAIN.csv'))\n",
    "df_test = pd.read_csv(os.path.join(root, '{}/GTGSH_TR_APS_DTL_{}.csv'.format(stage, stage)))\n",
    "\n",
    "df_train = pd.read_csv(os.path.join(root, 'train/GTGSH_TR_APS_DTL_TRAIN.csv'))\n",
    "df_test = pd.read_csv(os.path.join(root, '{}/GTGSH_TR_APS_DTL_{}.csv'.format(stage, stage)))\n",
    "df_train.APSDTRDAT = df_train.APSDTRDAT.astype(str)\n",
    "df_test.APSDTRDAT = df_test.APSDTRDAT.astype(str)\n",
    "df_train['if_train'] = 1\n",
    "df_test['if_train'] = 0\n",
    "data = pd.concat([df_train,df_test])\n",
    "# 按照object的大小，从大到小排序规则，进行编码\n",
    "def get_object_code1(df_behav, fea_list):\n",
    "    for fea in fea_list:\n",
    "        xx = sorted(list(df_behav[fea].value_counts().index), reverse=True)\n",
    "        dictav = dict(zip(xx, list(i for i in range(len(xx)))))\n",
    "        df_behav[fea] = df_behav[fea].map(dictav)\n",
    "    return df_behav\n",
    "data = get_object_code1(data, ['APSDTRCOD','APSDABS','APSDTRCHL'])\n",
    "df_train, df_test = data[data['if_train'] == 1].copy(), data[data['if_train'] == 0].copy()\n",
    "df_train_all = df_train[['CUST_NO']].drop_duplicates()\n",
    "df_test_all = df_test[['CUST_NO']].drop_duplicates()\n",
    "# 最近1周\n",
    "df_train_1w = df_train[df_train.APSDTRDAT>='20040407'].copy()\n",
    "df_test_1w = df_test[df_test.APSDTRDAT>='20040507'].copy()\n",
    "df_train_1w = prepro(df_train_1w, end_date_train)\n",
    "df_test_1w = prepro(df_test_1w, end_date_test)\n",
    "df_1w  = pd.concat([df_train_1w, df_test_1w], axis=0, ignore_index=True)\n",
    "del df_1w['aps_last_diff']\n",
    "\n",
    "columns = df_1w.columns\n",
    "new_column_names =[]\n",
    "for i, column in enumerate(columns):\n",
    "    new_column_names.append(column.replace('aps_','aps1w_'))\n",
    "\n",
    "df_1w.columns = new_column_names\n",
    "\n",
    "df_train_all = df_train_all.merge(df_1w, how='left', on='CUST_NO')\n",
    "df_test_all = df_test_all.merge(df_1w, how='left', on='CUST_NO')\n",
    "\n",
    "# 最近2周\n",
    "\n",
    "df_train_2w = df_train[df_train.APSDTRDAT>='20040331'].copy()\n",
    "df_test_2w = df_test[df_test.APSDTRDAT>='20040430'].copy()\n",
    "df_train_2w = prepro(df_train_2w, end_date_train)\n",
    "df_test_2w = prepro(df_test_2w, end_date_test)\n",
    "df_2w  = pd.concat([df_train_2w, df_test_2w], axis=0, ignore_index=True)\n",
    "del df_2w['aps_last_diff']\n",
    "\n",
    "columns = df_2w.columns\n",
    "new_column_names =[]\n",
    "for i, column in enumerate(columns):\n",
    "    new_column_names.append(column.replace('aps_','aps2w_'))\n",
    "\n",
    "df_2w.columns = new_column_names\n",
    "\n",
    "df_train_all = df_train_all.merge(df_2w, how='left', on='CUST_NO')\n",
    "df_test_all = df_test_all.merge(df_2w, how='left', on='CUST_NO')\n",
    "\n",
    "# 最近1个月\n",
    "\n",
    "df_train_1m = df_train[df_train.APSDTRDAT>='20040314'].copy()\n",
    "df_test_1m = df_test[df_test.APSDTRDAT>='20040414'].copy()\n",
    "df_train_1m = prepro(df_train_1m, end_date_train)\n",
    "df_test_1m = prepro(df_test_1m, end_date_test)\n",
    "df_1m  = pd.concat([df_train_1m, df_test_1m], axis=0, ignore_index=True)\n",
    "del df_1m['aps_last_diff']\n",
    "\n",
    "columns = df_1m.columns\n",
    "new_column_names =[]\n",
    "for i, column in enumerate(columns):\n",
    "    new_column_names.append(column.replace('aps_','aps1m_'))\n",
    "\n",
    "df_1m.columns = new_column_names\n",
    "\n",
    "df_train_all = df_train_all.merge(df_1m, how='left', on='CUST_NO')\n",
    "df_test_all = df_test_all.merge(df_1m, how='left', on='CUST_NO')\n",
    "\n",
    "# 最近2个月\n",
    "\n",
    "df_train_2m = df_train[df_train.APSDTRDAT>='20040214'].copy()\n",
    "df_test_2m = df_test[df_test.APSDTRDAT>='20040314'].copy()\n",
    "df_train_2m = prepro(df_train_2m, end_date_train)\n",
    "df_test_2m = prepro(df_test_2m, end_date_test)\n",
    "df_2m  = pd.concat([df_train_2m, df_test_2m], axis=0, ignore_index=True)\n",
    "del df_2m['aps_last_diff']\n",
    "\n",
    "columns = df_2m.columns\n",
    "new_column_names =[]\n",
    "for i, column in enumerate(columns):\n",
    "    new_column_names.append(column.replace('aps_','aps2m_'))\n",
    "\n",
    "df_2m.columns = new_column_names\n",
    "df_train_all = df_train_all.merge(df_2m, how='left', on='CUST_NO')\n",
    "df_test_all = df_test_all.merge(df_2m, how='left', on='CUST_NO')\n",
    "def huanbi(df2, df1, p, q):\n",
    "    df_1_tmp = df1.copy()\n",
    "    df_2_tmp = df2.set_index('CUST_NO').loc[df1['CUST_NO']].reset_index()\n",
    "    columns = df1.columns\n",
    "    new_column_names =[]\n",
    "    for i, column in enumerate(columns):\n",
    "        new_column_names.append(column.replace(p,q))\n",
    "    df_1_tmp.columns = new_column_names\n",
    "    df_2_tmp.columns = new_column_names\n",
    "    df_2_div_1 = df_2_tmp.iloc[:,1:].div(df_1_tmp.iloc[:,1:], fill_value=None)\n",
    "    df_2_div_1 = pd.concat([df_2_tmp[['CUST_NO']], df_2_div_1], axis=1)\n",
    "    return df_2_div_1\n",
    "\n",
    "dfs_huanbi = []\n",
    "dfs_huanbi.append(huanbi(df_2w, df_1w, 'aps1w_', 'aps2w_div_1w_'))\n",
    "dfs_huanbi.append(huanbi(df_2m, df_1m, 'aps1m_', 'aps2m_div_1m_'))\n",
    "df_train_final = df_train_all.copy()\n",
    "df_test_final = df_test_all.copy()\n",
    "for tmp in dfs_huanbi:\n",
    "    df_train_final = df_train_all.merge(tmp, how='left', on='CUST_NO')\n",
    "    df_test_final = df_test_all.merge(tmp, how='left', on='CUST_NO')\n",
    "data = pd.concat([df_train_all, df_test_all])\n",
    "data.columns = [col+'_5' if col!='CUST_NO' else col for col in data.columns]\n",
    "data.to_csv(r'../process/APS_5.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "9fb38af4-ec01-42ed-bf52-438551e523b9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:43:17.406451Z",
     "iopub.status.busy": "2024-11-13T07:43:17.405744Z",
     "iopub.status.idle": "2024-11-13T07:44:06.257728Z",
     "msg_id": "790e3537-636f-4571-bed6-6060cbf752fb",
     "shell.execute_reply": "2024-11-13T07:44:06.256865Z",
     "shell.execute_reply.started": "2024-11-13T07:43:17.406422Z"
    }
   },
   "outputs": [],
   "source": [
    "stage = 'A'\n",
    "root = '../contest'\n",
    "df_train = pd.read_csv(os.path.join(root, 'train/GTGSH_TR_APS_DTL_TRAIN.csv'))\n",
    "df_train['aps_datediff'] = (pd.to_datetime('20040414') - pd.to_datetime(df_train['APSDTRDAT'], format='%Y%m%d')).dt.days\n",
    "df_test = pd.read_csv(os.path.join(root, '{}/GTGSH_TR_APS_DTL_{}.csv'.format(stage, stage)))\n",
    "\n",
    "df_test['aps_datediff'] = (pd.to_datetime('20040514') - pd.to_datetime(df_test['APSDTRDAT'], format='%Y%m%d')).dt.days\n",
    "df_ALL_A = pd.concat([df_train,df_test],axis=0).reset_index(drop=True)\n",
    "# 按照object的大小，从大到小排序规则，进行编码\n",
    "df_ALL_A = get_object_code1(df_ALL_A,['APSDTRCOD','APSDABS','APSDTRCHL'])\n",
    "# 第四批，对金额进行>0,<0处理,流出\n",
    "# 第四批，对金额进行>0,<0处理,流出\n",
    "def make_inout_feature(df_ALL_A,prefix):\n",
    "    df_out = df_ALL_A[df_ALL_A['APSDTRAMT']<0].reset_index(drop=True)\n",
    "    df_in = df_ALL_A[df_ALL_A['APSDTRAMT']>=0].reset_index(drop=True)\n",
    "    \n",
    "    dict = {\n",
    "            'APSDTRCOD':['nunique','mean'],\n",
    "            'APSDABS':['nunique','mean'],\n",
    "            'APSDTRCHL':['nunique','mean'],\n",
    "            'APSDTRAMT':['sum','mean','max','min','std'],\n",
    "           }\n",
    "    agg_out = df_out.groupby('CUST_NO').agg(dict)\n",
    "    agg_out.columns = [prefix+'_OUT_'+col1+'_'+col2 for col1,col2 in agg_out.columns]\n",
    "    agg_in = df_in.groupby('CUST_NO').agg(dict)\n",
    "    agg_in.columns = [prefix+'_IN_'+col1+'_'+col2 for col1,col2 in agg_in.columns]\n",
    "\n",
    "\n",
    "    # 增加最大流入流出那一天的距今天数\n",
    "    def max_amt_diff(group):\n",
    "        max_amt_index = group['APSDTRAMT'].idxmax()\n",
    "        max_amt_datediff = group.loc[max_amt_index,'aps_datediff']\n",
    "        return max_amt_datediff\n",
    "\n",
    "    def min_amt_diff(group):\n",
    "        min_amt_index = group['APSDTRAMT'].idxmin()\n",
    "        min_amt_datediff = group.loc[min_amt_index,'aps_datediff']\n",
    "        return min_amt_datediff\n",
    "\n",
    "    # min_amount = df_ALL_A.groupby('CUST_NO').apply(min_amt_diff).reset_index(name='APS_min_amt_datediff')\n",
    "    # max_amount = df_ALL_A.groupby('CUST_NO').apply(max_amt_diff).reset_index(name='APS_max_amt_datediff')\n",
    "    # agg_in = pd.merge(agg_in,min_amount,on='CUST_NO')\n",
    "    # agg_out = pd.merge(agg_out,max_amount,on='CUST_NO')\n",
    "    return agg_in,agg_out\n",
    "agg_in,agg_out = make_inout_feature(df_ALL_A,'APS_')\n",
    "agg_in.to_csv(r'../process/APS_IN_XZT_1.csv')\n",
    "agg_out.to_csv(r'../process/APS_OUT_XZT_1.csv')\n",
    "\n",
    "\n",
    "\n",
    "# ----------------------------------- 流入/流出特征 --------------------------------\n",
    "agg_all = pd.merge(agg_in,agg_out,on='CUST_NO')\n",
    "columns1 = agg_in.columns.tolist()\n",
    "columns2 = agg_out.columns.tolist()\n",
    "for i in range(len(columns1)):\n",
    "    agg_all[columns1[i]+'_'+columns2[i]+'_div'] = agg_all[columns1[i]] / (agg_all[columns2[i]]+1e-5)\n",
    "    agg_all[columns1[i]+'_'+columns2[i]+'_diff'] = agg_all[columns1[i]] - agg_all[columns2[i]]\n",
    "\n",
    "agg_all[['APS__IN_APSDTRCOD_nunique_APS__OUT_APSDTRCOD_nunique_div',\n",
    "       'APS__IN_APSDTRCOD_nunique_APS__OUT_APSDTRCOD_nunique_diff',\n",
    "       'APS__IN_APSDTRCOD_mean_APS__OUT_APSDTRCOD_mean_div',\n",
    "       'APS__IN_APSDTRCOD_mean_APS__OUT_APSDTRCOD_mean_diff',\n",
    "       'APS__IN_APSDABS_nunique_APS__OUT_APSDABS_nunique_div',\n",
    "       'APS__IN_APSDABS_nunique_APS__OUT_APSDABS_nunique_diff',\n",
    "       'APS__IN_APSDABS_mean_APS__OUT_APSDABS_mean_div',\n",
    "       'APS__IN_APSDABS_mean_APS__OUT_APSDABS_mean_diff',\n",
    "       'APS__IN_APSDTRCHL_nunique_APS__OUT_APSDTRCHL_nunique_div',\n",
    "       'APS__IN_APSDTRCHL_nunique_APS__OUT_APSDTRCHL_nunique_diff',\n",
    "       'APS__IN_APSDTRCHL_mean_APS__OUT_APSDTRCHL_mean_div',\n",
    "       'APS__IN_APSDTRCHL_mean_APS__OUT_APSDTRCHL_mean_diff',\n",
    "       'APS__IN_APSDTRAMT_sum_APS__OUT_APSDTRAMT_sum_div',\n",
    "       'APS__IN_APSDTRAMT_sum_APS__OUT_APSDTRAMT_sum_diff',\n",
    "       'APS__IN_APSDTRAMT_mean_APS__OUT_APSDTRAMT_mean_div',\n",
    "       'APS__IN_APSDTRAMT_mean_APS__OUT_APSDTRAMT_mean_diff',\n",
    "       'APS__IN_APSDTRAMT_max_APS__OUT_APSDTRAMT_max_div',\n",
    "       'APS__IN_APSDTRAMT_max_APS__OUT_APSDTRAMT_max_diff',\n",
    "       'APS__IN_APSDTRAMT_min_APS__OUT_APSDTRAMT_min_div',\n",
    "       'APS__IN_APSDTRAMT_min_APS__OUT_APSDTRAMT_min_diff',\n",
    "       'APS__IN_APSDTRAMT_std_APS__OUT_APSDTRAMT_std_div',\n",
    "       'APS__IN_APSDTRAMT_std_APS__OUT_APSDTRAMT_std_diff']].to_csv(r'../process/APS_IN_OUT_XZT_1_1.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "019b37e9-6cbf-4984-90c7-ccbdf74fe72a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:44:06.259107Z",
     "iopub.status.busy": "2024-11-13T07:44:06.258828Z",
     "iopub.status.idle": "2024-11-13T07:44:06.262901Z",
     "msg_id": "d4437043-4d13-4146-b9c5-e549df5390dc",
     "shell.execute_reply": "2024-11-13T07:44:06.262122Z",
     "shell.execute_reply.started": "2024-11-13T07:44:06.259080Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from datetime import datetime"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "16727431-3e59-407f-a929-b3e302d31634",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:44:06.264047Z",
     "iopub.status.busy": "2024-11-13T07:44:06.263803Z",
     "iopub.status.idle": "2024-11-13T07:46:21.365859Z",
     "msg_id": "9d75c0dc-0348-4e16-884a-c4689b98547f",
     "shell.execute_reply": "2024-11-13T07:46:21.364993Z",
     "shell.execute_reply.started": "2024-11-13T07:44:06.264023Z"
    }
   },
   "outputs": [],
   "source": [
    "df_train = pd.read_csv(r'../contest/train/GTGSH_MERCH_TR_DTL_TRAIN.csv')\n",
    "df_train['aps_datediff'] = (pd.to_datetime('20040414') - pd.to_datetime(df_train['DATE_TR'], format='%Y%m%d')).dt.days\n",
    "df_test = pd.read_csv(r'../contest/A/GTGSH_MERCH_TR_DTL_A.csv')\n",
    "df_test['aps_datediff'] = (pd.to_datetime('20040514') - pd.to_datetime(df_test['DATE_TR'], format='%Y%m%d')).dt.days\n",
    "df_ALL_A = pd.concat([df_train,df_test],axis=0).reset_index(drop=True)\n",
    "\n",
    "df_ALL_A = get_object_code1(df_ALL_A,['COD_PSG','COD_TR'])\n",
    "\n",
    "def aggregate_features(df, key, num_features, cate_features, date_features,prefix):\n",
    "    agg_dict = {}\n",
    "    for col in num_features:\n",
    "        if col ==  'aps_datediff':\n",
    "            # agg_dict[col] = ['mean','std','max','min']\n",
    "            agg_dict[col] = ['min','mean','std','nunique']\n",
    "        else:\n",
    "            # agg_dict[col] = ['mean','std','max','min','sum','skew','median']\n",
    "            agg_dict[col] = ['mean','std','max','min','sum','skew','median','nunique']\n",
    "    for col in cate_features:\n",
    "        # agg_dict[col] = ['nunique','mean']\n",
    "        agg_dict[col] = ['nunique']\n",
    "        def mode(x):\n",
    "            try:\n",
    "                return x.mode().iloc[0]\n",
    "            except IndexError:\n",
    "                return None\n",
    "        agg_dict[col].append(('mode',mode))\n",
    "    for col in date_features:\n",
    "        agg_dict[col] = ['max','min']\n",
    "    # 计算每个组的数量\n",
    "    count_series = df.groupby(key).size().rename(prefix + '_count')\n",
    "    group_df = df.groupby(key).agg(agg_dict)\n",
    "    group_df.columns = [prefix+'_'+col1+'_'+col2 for col1,col2 in group_df.columns]\n",
    "\n",
    "        # 计算每个组的数量\n",
    "    def max_amt_diff(group):\n",
    "        max_amt_index = group['AMT_TR'].idxmax()\n",
    "        max_amt_datediff = group.loc[max_amt_index,'aps_datediff']\n",
    "        return max_amt_datediff\n",
    "\n",
    "    def min_amt_diff(group):\n",
    "        min_amt_index = group['AMT_TR'].idxmin()\n",
    "        min_amt_datediff = group.loc[min_amt_index,'aps_datediff']\n",
    "        return min_amt_datediff\n",
    "\n",
    "    min_amount = df.groupby('CUST_NO').apply(min_amt_diff).reset_index(name='MERCH_min_amt_datediff')\n",
    "    max_amount = df.groupby('CUST_NO').apply(max_amt_diff).reset_index(name='MERCH_max_amt_datediff')\n",
    "    \n",
    "    group_df = group_df.join(count_series)\n",
    "    group_df = pd.merge(group_df,min_amount,on='CUST_NO')\n",
    "    group_df = pd.merge(group_df,max_amount,on='CUST_NO')\n",
    "    return group_df\n",
    "AGG = aggregate_features(df_ALL_A, 'CUST_NO', ['AMT_TR','aps_datediff'], ['COD_TR','COD_PSG'], [],'MERCH_')\n",
    "AGG.to_csv(r'../process/MERCH_XZT_1_2.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "eef28cc5-e0a3-4293-9be1-21dbd0770222",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:46:21.367418Z",
     "iopub.status.busy": "2024-11-13T07:46:21.367023Z",
     "iopub.status.idle": "2024-11-13T07:46:22.124079Z",
     "msg_id": "c0f447be-c4a6-4c25-b5cb-a277a35fce46",
     "shell.execute_reply": "2024-11-13T07:46:22.123213Z",
     "shell.execute_reply.started": "2024-11-13T07:46:21.367391Z"
    }
   },
   "outputs": [],
   "source": [
    "'''\n",
    "train榜只有20040414这一天的数据\n",
    "A榜 20040514一天数据\n",
    "'''\n",
    "\n",
    "\n",
    "path = r'../contest'\n",
    "df_A = pd.read_csv(path+r'/A/GTGSH_TR_TPAY_A.csv')\n",
    "df_train = pd.read_csv(path+r'/train/GTGSH_TR_TPAY_TRAIN.csv')\n",
    "\n",
    "df_ALL_A = pd.concat([df_train,df_A],axis=0).reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "a2f718fb-8894-4c5c-97e9-f81c41dbce90",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:46:22.127563Z",
     "iopub.status.busy": "2024-11-13T07:46:22.127261Z",
     "iopub.status.idle": "2024-11-13T07:46:23.794244Z",
     "msg_id": "da8e7f02-30f8-48c8-87e2-1bbf3fbf094b",
     "shell.execute_reply": "2024-11-13T07:46:23.793367Z",
     "shell.execute_reply.started": "2024-11-13T07:46:22.127535Z"
    }
   },
   "outputs": [],
   "source": [
    "num_cols = ['TPAY_MOTH_TR_AMT', 'TPAY_SEAN_TR_AMT','TPAY_MOTH_NET_TR_AMT', 'TPAY_SEAN_NET_TR_AMT', 'TPAY_MOTH_TR_CNT','TPAY_SEAN_TR_CNT', 'TPAY_WX_MOTH_TR_CNT', 'TPAY_WX_SEAN_TR_CNT',\n",
    "       'TPAY_WX_MOTH_TR_AMT', 'TPAY_WX_SEAN_TR_AMT', 'TPAY_ALI_MOTH_TR_CNT','TPAY_ALI_SEAN_TR_CNT', 'TPAY_ALI_MOTH_TR_AMT', 'TPAY_ALI_SEAN_TR_AMT']\n",
    "\n",
    "df_ALL_A.drop(columns=['DATA_DAT'],inplace=True)\n",
    "df_ALL_A.to_csv(r'../process/TRPAY_1.csv',index=False)\n",
    "\n",
    "df_ALL_A['TPAY_MOTH_NET_TR_AMT_TPAY_MOTH_TR_AMT_DIFF'] = df_ALL_A['TPAY_MOTH_NET_TR_AMT'] - df_ALL_A['TPAY_MOTH_TR_AMT']\n",
    "df_ALL_A['TPAY_SEAN_NET_TR_AMT_TPAY_SEAN_TR_AMT_DIFF'] = df_ALL_A['TPAY_SEAN_NET_TR_AMT'] - df_ALL_A['TPAY_SEAN_TR_AMT']\n",
    "df_ALL_A['TPAY_WX_SEAN_TR_AMT_TPAY_ALI_SEAN_TR_AMT_SUM'] = df_ALL_A['TPAY_WX_SEAN_TR_AMT'] + df_ALL_A['TPAY_ALI_SEAN_TR_AMT']\n",
    "df_ALL_A['TPAY_WX_MOTH_TR_AMT_TTPAY_ALI_MOTH_TR_AMT_SUM'] = df_ALL_A['TPAY_WX_MOTH_TR_AMT'] + df_ALL_A['TPAY_ALI_MOTH_TR_AMT']\n",
    "df_ALL_A['TPAY_WX_MOTH_TR_CNT_TPAY_ALI_MOTH_TR_CNT_SUM'] = df_ALL_A['TPAY_WX_MOTH_TR_CNT'] + df_ALL_A['TPAY_ALI_MOTH_TR_CNT']\n",
    "df_ALL_A['TPAY_WX_SEAN_TR_CNT_TPAY_ALI_SEAN_TR_CNT_SUM'] = df_ALL_A['TPAY_WX_SEAN_TR_CNT'] + df_ALL_A['TPAY_ALI_SEAN_TR_CNT']\n",
    "\n",
    "def T_pay(df):\n",
    "    df['TPAY2_OTHER_MOTH_TR_AMT'] = df['TPAY_MOTH_TR_AMT'] - df['TPAY_WX_MOTH_TR_AMT'] - df['TPAY_ALI_MOTH_TR_AMT']\n",
    "    df['TPAY2_OTHER_SEAN_TR_AMT'] = df['TPAY_SEAN_TR_AMT'] - df['TPAY_WX_SEAN_TR_AMT'] - df['TPAY_ALI_SEAN_TR_AMT']\n",
    "        \n",
    "    df['TPAY2_OTHER_MOTH_TR_CNT'] = df['TPAY_MOTH_TR_CNT'] - df['TPAY_WX_MOTH_TR_CNT'] - df['TPAY_ALI_MOTH_TR_CNT']\n",
    "    df['TPAY2_OTHER_SEAN_TR_CNT'] = df['TPAY_SEAN_TR_CNT'] - df['TPAY_WX_SEAN_TR_CNT'] - df['TPAY_ALI_SEAN_TR_CNT']\n",
    "        \n",
    "            # 净交易/总交易\n",
    "    df['TPAY2_MOTH_NET_TR_AMT_div_ALL'] = df['TPAY_MOTH_NET_TR_AMT'] / df['TPAY_MOTH_TR_AMT']\n",
    "    df['TPAY2_SEAN_NET_TR_AMT_div_ALL'] = df['TPAY_SEAN_NET_TR_AMT'] / df['TPAY_SEAN_TR_AMT']\n",
    "        \n",
    "            # 笔均\n",
    "    df['TPAY2_TPAY_MOTH_TR_AMT_each'] = df['TPAY_MOTH_TR_AMT'] / df['TPAY_MOTH_TR_CNT']\n",
    "    df['TPAY2_TPAY_SEAN_TR_AMT_each'] = df['TPAY_SEAN_TR_AMT'] / df['TPAY_SEAN_TR_CNT']\n",
    "        \n",
    "    df['TPAY2_TPAY_WX_MOTH_TR_AMT_each'] = df['TPAY_WX_MOTH_TR_AMT'] / df['TPAY_WX_MOTH_TR_CNT']\n",
    "    df['TPAY2_TPAY_WX_SEAN_TR_AMT_each'] = df['TPAY_WX_SEAN_TR_AMT'] / df['TPAY_WX_SEAN_TR_CNT']\n",
    "        \n",
    "    df['TPAY2_TPAY_ALI_MOTH_TR_AMT_each'] = df['TPAY_ALI_MOTH_TR_AMT'] / df['TPAY_ALI_MOTH_TR_CNT']\n",
    "    df['TPAY2_TPAY_ALI_SEAN_TR_AMT_each'] = df['TPAY_ALI_SEAN_TR_AMT'] / df['TPAY_ALI_SEAN_TR_CNT']\n",
    "        \n",
    "    df['TPAY2_OTHER_MOTH_TR_AMT_each'] = df['TPAY2_OTHER_MOTH_TR_AMT'] / df['TPAY2_OTHER_MOTH_TR_CNT']\n",
    "    df['TPAY2_OTHER_SEAN_TR_AMT_each'] = df['TPAY2_OTHER_SEAN_TR_AMT'] / df['TPAY2_OTHER_SEAN_TR_CNT']\n",
    "    return df\n",
    "\n",
    "df_ALL_A = T_pay(df_ALL_A)\n",
    "\n",
    "df_ALL_A[['CUST_NO']+['TPAY_MOTH_NET_TR_AMT_TPAY_MOTH_TR_AMT_DIFF',\n",
    "       'TPAY_SEAN_NET_TR_AMT_TPAY_SEAN_TR_AMT_DIFF',\n",
    "       'TPAY_WX_SEAN_TR_AMT_TPAY_ALI_SEAN_TR_AMT_SUM',\n",
    "       'TPAY_WX_MOTH_TR_AMT_TTPAY_ALI_MOTH_TR_AMT_SUM',\n",
    "       'TPAY_WX_MOTH_TR_CNT_TPAY_ALI_MOTH_TR_CNT_SUM',\n",
    "       'TPAY_WX_SEAN_TR_CNT_TPAY_ALI_SEAN_TR_CNT_SUM',\n",
    "       'TPAY2_OTHER_MOTH_TR_AMT', 'TPAY2_OTHER_SEAN_TR_AMT',\n",
    "       'TPAY2_OTHER_MOTH_TR_CNT', 'TPAY2_OTHER_SEAN_TR_CNT',\n",
    "       'TPAY2_MOTH_NET_TR_AMT_div_ALL', 'TPAY2_SEAN_NET_TR_AMT_div_ALL',\n",
    "       'TPAY2_TPAY_MOTH_TR_AMT_each', 'TPAY2_TPAY_SEAN_TR_AMT_each',\n",
    "       'TPAY2_TPAY_WX_MOTH_TR_AMT_each', 'TPAY2_TPAY_WX_SEAN_TR_AMT_each',\n",
    "       'TPAY2_TPAY_ALI_MOTH_TR_AMT_each', 'TPAY2_TPAY_ALI_SEAN_TR_AMT_each',\n",
    "       'TPAY2_OTHER_MOTH_TR_AMT_each', 'TPAY2_OTHER_SEAN_TR_AMT_each']].to_csv(r'../process/TRPAY_1_3.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "9a25575c-5535-40a9-a644-bc867710465b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:46:23.796070Z",
     "iopub.status.busy": "2024-11-13T07:46:23.795530Z",
     "iopub.status.idle": "2024-11-13T07:46:27.243827Z",
     "msg_id": "401375fc-0a16-4d51-b9bc-a49e405a7acf",
     "shell.execute_reply": "2024-11-13T07:46:27.242966Z",
     "shell.execute_reply.started": "2024-11-13T07:46:23.796042Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['CUST_NO', 'AST_DAY_AUM_BAL', 'AST_MAVER_AUM_BAL', 'AST_SAVER_AUM_BAL',\n",
      "       'AST_YAVER_AUM_BAL', 'AST_AUM_BAL_MAX', 'DEBT_DAY_LOAN_BAL',\n",
      "       'DEBT_MAVER_LOAN_BAL', 'DEBT_SAVER_LOAN_BAL', 'DEBT_YAVER_LOAN_BAL',\n",
      "       'AST_DAY_DP_BAL', 'AST_MAVER_DP_BAL', 'AST_SAVER_DP_BAL',\n",
      "       'AST_YAVER_DP_BAL', 'AST_DAY_DPSA_BAL', 'AST_MAVER_DPSA_BAL',\n",
      "       'AST_SAVER_DPSA_BAL', 'AST_YAVER_DPSA_BAL'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "'''\n",
    "train榜只有20040414这一天的数据\n",
    "A榜 20040514一天数据\n",
    "'''\n",
    "\n",
    "\n",
    "path = r'../'\n",
    "df_A = pd.read_csv(path+r'contest/A/GTGSH_ASSET_A.csv')\n",
    "df_train = pd.read_csv(path+r'contest/train/GTGSH_ASSET_TRAIN.csv')\n",
    "\n",
    "df_ALL_A = pd.concat([df_train,df_A],axis=0).reset_index(drop=True)\n",
    "\n",
    "df_ALL_A[['CUST_NO', 'AST_DAY_AUM_BAL', 'AST_MAVER_AUM_BAL',\n",
    "       'AST_SAVER_AUM_BAL', 'AST_YAVER_AUM_BAL', 'AST_AUM_BAL_MAX',\n",
    "       'DEBT_LOAN_BAL', 'DEBT_LOAN_BAL_MAVER', 'DEBT_LOAN_BAL_SAVER',\n",
    "       'DEBT_LOAN_BAL_YAVER', 'AST_DP_BAL', 'AST_MAVER_DP_BAL',\n",
    "       'AST_SAVER_DP_BAL', 'AST_YAVER_DP_BAL', 'AST_DPSA_BAL',\n",
    "       'AST_MAVER_DPSA_BAL', 'AST_SAVER_DPSA_BAL', 'AST_YAVER_DPSA_BAL']].to_csv(r'../process/ASSET_1.csv',index=False)\n",
    "\n",
    "'''\n",
    "1 资产表\n",
    "22年：相除相减\n",
    "'''\n",
    "def fe_asset(df):\n",
    "    df = df.drop('DATA_DAT',axis=1)\n",
    "    features = df.columns[1:]\n",
    "    for ind1 in range(len(features)-1):\n",
    "        for ind2 in range(ind1+1, len(features)):\n",
    "            fea1 = features[ind1]\n",
    "            fea2 = features[ind2]\n",
    "            df[f'{fea1}_{fea1}_diff'] = df[fea1] - df[fea2]\n",
    "            df[f'{fea1}_{fea2}_ratio'] = df[fea1] / (df[fea2] +1e-5)\n",
    "    return df\n",
    "\n",
    "# ---- 23年，按照字段进行合并，注意今年多给了AUM，DPSA活期存款，一共有AUM、DEBT、DP（存款）、DPSA（活期存款）\n",
    "# 23年是金融资产、存款、贷款\n",
    "\n",
    "def prepro(df):\n",
    "    if 'DATA_DAT' in df.columns:\n",
    "        df = df.drop('DATA_DAT',axis=1)\n",
    "    # for col in df.columns[1:]:\n",
    "        # df[col] = df[col].fillna(0).apply(lambda x: round(pow(x/3.12,3),2))  # --------- 两种都要试一下---------------  \n",
    "    \n",
    "    df = df.rename(columns={\n",
    "        'AST_DP_BAL':'AST_DAY_DP_BAL', \n",
    "        'DEBT_LOAN_BAL':'DEBT_DAY_LOAN_BAL',\n",
    "        'DEBT_LOAN_BAL_MAVER':'DEBT_MAVER_LOAN_BAL',\n",
    "        'DEBT_LOAN_BAL_SAVER':'DEBT_SAVER_LOAN_BAL',\n",
    "        'DEBT_LOAN_BAL_YAVER':'DEBT_YAVER_LOAN_BAL',\n",
    "        'AST_DPSA_BAL':'AST_DAY_DPSA_BAL'\n",
    "    })\n",
    "    print(df.columns)\n",
    "\n",
    "    period_list = ['DAY', 'MAVER', 'SAVER', 'YAVER']\n",
    "\n",
    "    for i, period in enumerate(period_list):\n",
    "        PERIOD = period.upper()\n",
    "        # --------------------先判断aum是否相同------------------\n",
    "        # df['ast_'+period+'_AUM_BAL'] = df['AST_'+PERIOD+'_FA_BAL'] - (df['DEBT_'+PERIOD+'_LOAN_BAL'] / 2) # 计算aum 金融资产-1/2贷款\n",
    "        # df['AST_'+period+'_otr_bal'] = df['AST_'+period+'_AUM_BAL'] - df['AST_'+PERIOD+'_DP_BAL'] # 计算其他资产 aum-存款\n",
    "\n",
    "        # # ----------新增金融资产计算 xzt ---------------\n",
    "        # df['AST_'+period+'_FA_BAL'] = df['AST_'+PERIOD+'_AUM_BAL'] + (df['DEBT_'+PERIOD+'_LOAN_BAL'] / 2) # 计算aum 金融资产-1/2贷款\n",
    "\n",
    "    # 计算aum、其他资产和贷款的日月季年差值\n",
    "    # ---------------  日、月、季差别，同一类的，记得加上debt!!!!!!-------------------\n",
    "    for i, pi in enumerate(period_list):\n",
    "        for j in range(i+1, len(period_list)):\n",
    "            pj = period_list[j]\n",
    "            PI, PJ = pi.upper(), pj.upper()\n",
    "            df['AST_'+pi+'_diff_'+pj+'_AUM_BAL'] = df['AST_'+pj+'_AUM_BAL'] - df['AST_'+pi+'_AUM_BAL'] # aum日月季年的差值\n",
    "            # df['AST_'+pi+'_diff_'+pj+'_otr'] = df['AST_'+pj+'_otr_bal'] - df['AST_'+pi+'_otr_bal'] # 其他资产日月季年的差值\n",
    "            df['AST_'+pi+'_diff_'+pj+'_loan'] = df['DEBT_'+PJ+'_LOAN_BAL'] - df['DEBT_'+PI+'_LOAN_BAL']  # 贷款日月季年的差值\n",
    "            df['AST_'+pi+'_diff_'+pj+'_DP'] = df['AST_'+PJ+'_DP_BAL'] - df['AST_'+PI+'_DP_BAL']  # 资产日月季年的差值\n",
    "            # df['AST_'+pi+'_diff_'+pj+'_DPSA'] = df['AST_'+PJ+'_DPSA_BAL'] - df['AST_'+PI+'_DPSA_BAL']  # 活期存款日月季年的差值\n",
    "            # df['AST_'+pi+'_diff_'+pj+'_FA'] = df['AST_'+PJ+'_FA_BAL'] - df['AST_'+PI+'_FA_BAL']  # 活期存款日月季年的差值\n",
    "\n",
    "\n",
    "            # df['AST_'+pi+'_div_'+pj+'_AUM_BAL'] = df['AST_'+pj+'_AUM_BAL'] / (df['AST_'+pi+'_AUM_BAL']+1e-5) # aum日月季年的差值\n",
    "            # df['AST_'+pi+'_div_'+pj+'_otr'] = df['AST_'+pj+'_otr_bal'] / (df['AST_'+pi+'_otr_bal']+1e-5) # 其他资产日月季年的差值\n",
    "            # df['AST_'+pi+'_div_'+pj+'_loan'] = df['DEBT_'+PJ+'_LOAN_BAL'] / (df['DEBT_'+PI+'_LOAN_BAL']+1e-5)  # 贷款日月季年的差值\n",
    "            # df['AST_'+pi+'_div_'+pj+'_DP'] = df['AST_'+PJ+'_DP_BAL'] / (df['AST_'+PI+'_DP_BAL']+1e-5)  # 资产日月季年的差值\n",
    "            # df['AST_'+pi+'_div_'+pj+'_DPSA'] = df['AST_'+PJ+'_DPSA_BAL'] / (df['AST_'+PI+'_DPSA_BAL']+1e-5)  # 活期存款日月季年的差值\n",
    "            # df['AST_'+pi+'_div_'+pj+'_FA'] = df['AST_'+PJ+'_FA_BAL'] / (df['AST_'+PI+'_FA_BAL']+1e-5)  # 活期存款日月季年的差值\n",
    "    return df\n",
    "df_ALL_A= prepro(df_ALL_A)\n",
    "\n",
    "df_ALL_A = df_ALL_A.rename(columns={\n",
    "        'AST_DP_BAL':'AST_DAY_DP_BAL', \n",
    "        'DEBT_LOAN_BAL':'DEBT_DAY_LOAN_BAL',\n",
    "        'DEBT_LOAN_BAL_MAVER':'DEBT_MAVER_LOAN_BAL',\n",
    "        'DEBT_LOAN_BAL_SAVER':'DEBT_SAVER_LOAN_BAL',\n",
    "        'DEBT_LOAN_BAL_YAVER':'DEBT_YAVER_LOAN_BAL',\n",
    "        'AST_DPSA_BAL':'AST_DAY_DPSA_BAL'})\n",
    "\n",
    "columns = ['AST_DAY_AUM_BAL', 'AST_MAVER_AUM_BAL', 'AST_SAVER_AUM_BAL',\n",
    "       'AST_YAVER_AUM_BAL', 'AST_AUM_BAL_MAX', 'DEBT_DAY_LOAN_BAL',\n",
    "       'DEBT_MAVER_LOAN_BAL', 'DEBT_SAVER_LOAN_BAL', 'DEBT_YAVER_LOAN_BAL',\n",
    "       'AST_DAY_DP_BAL', 'AST_MAVER_DP_BAL', 'AST_SAVER_DP_BAL',\n",
    "       'AST_YAVER_DP_BAL', 'AST_DAY_DPSA_BAL', 'AST_MAVER_DPSA_BAL',\n",
    "       'AST_SAVER_DPSA_BAL', 'AST_YAVER_DPSA_BAL']\n",
    "# 只保留debt的\n",
    "# df_ALL_A['AST_DAY_AUM_BAL_AST_DAY_AUM_MAX_div'] = df_ALL_A['AST_DAY_AUM_BAL'] /  (df_ALL_A['AST_DAY_AUM_MAX']+1e-5)\n",
    "\n",
    "\n",
    "# AUM和DPSA交叉\n",
    "# 原始表才行！！！！！！！！！！！！！！！！！！！！！！！！！  重新读！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！\n",
    "df_ALL_A['isnan_count'] = df_ALL_A.isnull().sum(axis=1)\n",
    "df_ALL_A['AST_DAY_AUM_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['AST_DAY_AUM_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "df_ALL_A['AST_MAVER_AUM_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['AST_MAVER_AUM_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "df_ALL_A['AST_SAVER_AUM_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['AST_SAVER_AUM_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "df_ALL_A['AST_YAVER_AUM_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['AST_YAVER_AUM_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "\n",
    "\n",
    "df_ALL_A['AST_DAY_AUM_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['AST_DAY_AUM_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "df_ALL_A['AST_MAVER_AUM_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['AST_MAVER_AUM_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "df_ALL_A['AST_SAVER_AUM_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['AST_SAVER_AUM_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "df_ALL_A['AST_YAVER_AUM_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['AST_YAVER_AUM_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "\n",
    "\n",
    "# AUM和DPSA交叉\n",
    "# df_ALL_A['AST_DAY_AUM_BAL_DEBT_DAY_LOAN_BAL_div'] = df_ALL_A['AST_DAY_AUM_BAL'] /  (df_ALL_A['AST_DAY_DPSA_BAL']+1e-5)\n",
    "# df_ALL_A['AST_MAVER_AUM_BAL_DEBT_MAVER_LOAN_BAL_div'] = df_ALL_A['AST_MAVER_AUM_BAL'] /  (df_ALL_A['AST_MAVER_DPSA_BAL']+1e-5)\n",
    "# df_ALL_A['AST_SAVER_AUM_BAL_DEBT_SAVER_LOAN_BAL_div'] = df_ALL_A['AST_SAVER_AUM_BAL'] /  (df_ALL_A['AST_SAVER_DPSA_BAL']+1e-5)\n",
    "# df_ALL_A['AST_YAVER_AUM_BAL_DEBT_YAVER_LOAN_BAL_div'] = df_ALL_A['AST_YAVER_AUM_BAL'] /  (df_ALL_A['AST_YAVER_DPSA_BAL']+1e-5)\n",
    "\n",
    "\n",
    "# df_ALL_A['AST_DAY_AUM_BAL_AST_DAY_DPSA_BAL_diff'] = df_ALL_A['AST_DAY_AUM_BAL'] -  df_ALL_A['AST_DAY_DPSA_BAL']\n",
    "# df_ALL_A['AST_MAVER_AUM_BAL_AST_MAVER_DPSA_BAL_diff'] = df_ALL_A['AST_MAVER_AUM_BAL'] -  df_ALL_A['AST_MAVER_DPSA_BAL']\n",
    "# df_ALL_A['AST_SAVER_AUM_BAL_AST_SAVER_DPSA_BAL_diff'] = df_ALL_A['AST_SAVER_AUM_BAL'] -  df_ALL_A['AST_SAVER_DPSA_BAL']\n",
    "# df_ALL_A['AST_YAVER_AUM_BAL_AST_YAVER_DPSA_BALL_diff'] = df_ALL_A['AST_YAVER_AUM_BAL'] -  df_ALL_A['AST_YAVER_DPSA_BAL']\n",
    "\n",
    "\n",
    "# AUM与LOAN交叉\n",
    "df_ALL_A['AST_YAVER_AUM_BAL_DEBT_YAVER_LOAN_BAL_diff'] = df_ALL_A['AST_YAVER_AUM_BAL'] -  df_ALL_A['DEBT_YAVER_LOAN_BAL']\n",
    "df_ALL_A['AST_YAVER_AUM_BAL_DEBT_YAVER_LOAN_BAL_div'] = df_ALL_A['AST_YAVER_AUM_BAL'] /  (df_ALL_A['DEBT_YAVER_LOAN_BAL']+1e-5)\n",
    "\n",
    "df_ALL_A['AST_SAVER_AUM_BAL_DEBT_SAVER_LOAN_BAL_div'] = df_ALL_A['AST_SAVER_AUM_BAL'] /  (df_ALL_A['DEBT_SAVER_LOAN_BAL']+1e-5)\n",
    "df_ALL_A['AST_MAVER_AUM_BAL_DEBT_MAVER_LOAN_BAL_diff'] = df_ALL_A['AST_MAVER_AUM_BAL'] -  df_ALL_A['DEBT_MAVER_LOAN_BAL']\n",
    "\n",
    "df_ALL_A[['CUST_NO']+['AST_DAY_diff_MAVER_AUM_BAL', 'AST_DAY_diff_MAVER_loan',\n",
    "       'AST_DAY_diff_MAVER_DP', 'AST_DAY_diff_SAVER_AUM_BAL',\n",
    "       'AST_DAY_diff_SAVER_loan', 'AST_DAY_diff_SAVER_DP',\n",
    "       'AST_DAY_diff_YAVER_AUM_BAL', 'AST_DAY_diff_YAVER_loan',\n",
    "       'AST_DAY_diff_YAVER_DP', 'AST_MAVER_diff_SAVER_AUM_BAL',\n",
    "       'AST_MAVER_diff_SAVER_loan', 'AST_MAVER_diff_SAVER_DP',\n",
    "       'AST_MAVER_diff_YAVER_AUM_BAL', 'AST_MAVER_diff_YAVER_loan',\n",
    "       'AST_MAVER_diff_YAVER_DP', 'AST_SAVER_diff_YAVER_AUM_BAL',\n",
    "       'AST_SAVER_diff_YAVER_loan', 'AST_SAVER_diff_YAVER_DP', 'isnan_count',\n",
    "       'AST_DAY_AUM_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'AST_MAVER_AUM_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'AST_SAVER_AUM_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'AST_YAVER_AUM_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'AST_DAY_AUM_BAL_AST_AUM_BAL_MAX_diff',\n",
    "       'AST_MAVER_AUM_BAL_AST_AUM_BAL_MAX_diff',\n",
    "       'AST_SAVER_AUM_BAL_AST_AUM_BAL_MAX_diff',\n",
    "       'AST_YAVER_AUM_BAL_AST_AUM_BAL_MAX_diff',\n",
    "       'AST_YAVER_AUM_BAL_DEBT_YAVER_LOAN_BAL_diff',\n",
    "       'AST_YAVER_AUM_BAL_DEBT_YAVER_LOAN_BAL_div',\n",
    "       'AST_SAVER_AUM_BAL_DEBT_SAVER_LOAN_BAL_div',\n",
    "       'AST_MAVER_AUM_BAL_DEBT_MAVER_LOAN_BAL_diff']].to_csv(r'../process/ASSET_3_1.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "d8ce00ae-ec1f-4505-9d03-7f744a5f4046",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:46:27.245305Z",
     "iopub.status.busy": "2024-11-13T07:46:27.245026Z",
     "iopub.status.idle": "2024-11-13T07:46:27.705510Z",
     "msg_id": "79df4e8a-8d11-4719-a992-934a9f101cce",
     "shell.execute_reply": "2024-11-13T07:46:27.704667Z",
     "shell.execute_reply.started": "2024-11-13T07:46:27.245279Z"
    }
   },
   "outputs": [],
   "source": [
    "df_ALL_A['DEBT_DAY_LOAN_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['DEBT_DAY_LOAN_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "df_ALL_A['DEBT_MAVER_LOAN_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['DEBT_MAVER_LOAN_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "df_ALL_A['DEBT_SAVER_LOAN_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['DEBT_SAVER_LOAN_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "df_ALL_A['DEBT_YAVER_LOAN_BAL_AST_AUM_BAL_MAX_div'] = df_ALL_A['DEBT_YAVER_LOAN_BAL'] /  (df_ALL_A['AST_AUM_BAL_MAX']+1e-5)\n",
    "\n",
    "\n",
    "df_ALL_A['DEBT_DAY_LOAN_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['DEBT_DAY_LOAN_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "df_ALL_A['DEBT_MAVER_LOAN_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['DEBT_MAVER_LOAN_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "df_ALL_A['DEBT_SAVER_LOAN_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['DEBT_SAVER_LOAN_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "df_ALL_A['DEBT_YAVER_LOAN_BAL_AST_AUM_BAL_MAX_diff'] = df_ALL_A['DEBT_YAVER_LOAN_BAL'] -  df_ALL_A['AST_AUM_BAL_MAX']\n",
    "\n",
    "df_ALL_A[['CUST_NO']+['DEBT_DAY_LOAN_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'DEBT_MAVER_LOAN_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'DEBT_SAVER_LOAN_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'DEBT_YAVER_LOAN_BAL_AST_AUM_BAL_MAX_div',\n",
    "       'DEBT_DAY_LOAN_BAL_AST_AUM_BAL_MAX_diff',\n",
    "       'DEBT_MAVER_LOAN_BAL_AST_AUM_BAL_MAX_diff',\n",
    "       'DEBT_SAVER_LOAN_BAL_AST_AUM_BAL_MAX_diff',\n",
    "       'DEBT_YAVER_LOAN_BAL_AST_AUM_BAL_MAX_diff']].to_csv(r'../process/ASSET_4.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "313e81dd-7b5b-41e8-91bf-9ffe13a42716",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:46:27.706898Z",
     "iopub.status.busy": "2024-11-13T07:46:27.706616Z",
     "iopub.status.idle": "2024-11-13T07:46:57.671772Z",
     "msg_id": "e0f3bcca-cfff-4de8-bd24-f9955823f98a",
     "shell.execute_reply": "2024-11-13T07:46:57.670918Z",
     "shell.execute_reply.started": "2024-11-13T07:46:27.706872Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import joblib\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import gc\n",
    "import datetime\n",
    "import os\n",
    "import random\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "#  top 30 模块的 page,上一个页面， 上一个页面拼当前页面的nunique特征\n",
    "import gc\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from tqdm import tqdm\n",
    "\n",
    "# 1 读取数据集\n",
    "# 1.1 训练集\n",
    "\n",
    "mb_pageview_dtl_train    = pd.read_csv('../contest/train/GTGSH_MB_PAGEVIEW_DTL_TRAIN.csv')\n",
    "\n",
    "\n",
    "# 1.1.1 重命名（aps,ibtf无需重命名）\n",
    "\n",
    "mb_pageview_dtl_train.columns = [('_').join(['mb_pageview_dtl', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in mb_pageview_dtl_train.columns]\n",
    "\n",
    "# 1.2 测试集\n",
    "\n",
    "mb_pageview_dtl_test_a = pd.read_csv('../contest/A/GTGSH_MB_PAGEVIEW_DTL_A.csv')\n",
    "\n",
    "\n",
    "# 1.2.1 重命名\n",
    "mb_pageview_dtl_test_a.columns = [('_').join(['mb_pageview_dtl', col]) if col not in ['CUST_NO', 'FLAG'] else col for col in mb_pageview_dtl_test_a.columns]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "088000f0-fc1a-4e45-a1f7-48d0380962af",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:46:57.673181Z",
     "iopub.status.busy": "2024-11-13T07:46:57.672898Z",
     "iopub.status.idle": "2024-11-13T07:46:57.682450Z",
     "msg_id": "74440cc0-6b0b-4384-b5ad-1ab1e03d6c76",
     "shell.execute_reply": "2024-11-13T07:46:57.681649Z",
     "shell.execute_reply.started": "2024-11-13T07:46:57.673154Z"
    }
   },
   "outputs": [],
   "source": [
    "def get_all_id_category_features(df_fea, df_to_groupby, fea1, fea2, stats):\n",
    "    all_new_fea_cols = []\n",
    "    for stat in tqdm(stats):\n",
    "        df_fea, new_fea_cols = get_id_category_features(df_fea, df_to_groupby, fea1, fea2, stat)\n",
    "        all_new_fea_cols += new_fea_cols\n",
    "    return df_fea, all_new_fea_cols\n",
    "\n",
    "def get_id_category_features(df_fea, df_to_groupby, fea1, fea2, stat):\n",
    "    tmp = df_to_groupby.groupby(['CUST_NO', fea1])[fea2].agg(\n",
    "        stat if stat != \"kurt\" else lambda x: x.kurt()\n",
    "    ).to_frame(\n",
    "        '_'.join(['CUST_NO', fea1, fea2, stat])\n",
    "    ).reset_index()\n",
    "    \n",
    "    df_tmp = pd.pivot(data=tmp, index='CUST_NO', columns=fea1, values='_'.join(['CUST_NO', fea1, fea2, stat]))  # index: CUST_NO\n",
    "    new_fea_cols = ['_'.join(['CUST_NO', fea1, fea2, stat, str(col)]) for col in df_tmp.columns]\n",
    "    df_tmp.columns = new_fea_cols\n",
    "    df_tmp.reset_index(inplace=True)\n",
    "        \n",
    "    if stat == 'count':\n",
    "        df_tmp = df_tmp.fillna(0)\n",
    "        \n",
    "    # 去掉全NaN列\n",
    "    valid_cols = []\n",
    "    for col in df_tmp.columns:\n",
    "        if not df_tmp[col].isna().all():\n",
    "            valid_cols.append(col)\n",
    "            \n",
    "    df_fea = df_fea.merge(df_tmp[valid_cols], on='CUST_NO', how='left')\n",
    "    return df_fea, new_fea_cols "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "f86a0d00-a672-4eb7-8529-5b9684ccd580",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:46:57.683879Z",
     "iopub.status.busy": "2024-11-13T07:46:57.683617Z",
     "iopub.status.idle": "2024-11-13T07:49:24.515397Z",
     "msg_id": "5240c21e-5a78-4816-9364-c00dae7059dc",
     "shell.execute_reply": "2024-11-13T07:49:24.514533Z",
     "shell.execute_reply.started": "2024-11-13T07:46:57.683854Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "len(common_word_page): 13180\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 1/1 [00:25<00:00, 25.96s/it]\n",
      "100%|██████████| 1/1 [00:01<00:00,  1.86s/it]\n"
     ]
    }
   ],
   "source": [
    "# 6.1.3 top30模块点击页面数统计量特征\n",
    "def gen_mb_all_join_op_unique_features_by_days(df_train, df_test):\n",
    "    def get_days_to_now(df):\n",
    "        df[\"mb_pageview_dtl_OPERATION_DATE\"] = pd.to_datetime(df[\"mb_pageview_dtl_OPERATION_DATE\"], format=\"%Y%m%d\")\n",
    "        df_months_to_now = (df[\"mb_pageview_dtl_OPERATION_DATE\"].max() - df[\"mb_pageview_dtl_OPERATION_DATE\"]).dt.days\n",
    "        df[\"date_months_to_now\"] = df_months_to_now // 31  # 距今月数\n",
    "        df[\"date_weeks_to_now\"] = df_months_to_now // 7  # 距今周数\n",
    "        df[\"date_days_to_now\"] = df_months_to_now  # 距今天数   \n",
    "        return df\n",
    "\n",
    "\n",
    "    def gen_mb_join_op_unique_features_by_days(df_feature, df_page):\n",
    "        # 1 每月top30模块按天/交易代码聚合：取训练集前60点击模块/页面，用于分组统计   mb——3,卡了top40\n",
    "        df_page.loc[~df_page['mb_pageview_dtl_MODEL_NAME'].isin([\n",
    "            '6bb41067851861502c74edd3b31005ae', '7619f114489310d42a8e28428ca63365',\n",
    "            'a780b0fb118f24e312c529fa155a9842', 'e1db7167ba7354e6f7726a826157b01d',\n",
    "            'b3ab3a75ec639b57bcfa5464d2beb2e3', 'c99a39f3c62ae02128cdb0acf5c1d2dd',\n",
    "            'e0cb9e3e71029836e967b79c6142f269', '2cadedba80c7b47479e07f67c2fwo1k7a02b',\n",
    "            '5a4f90c9f6e5be172c819bc65ee73d09', 'cd17e55565660174030893770260f7c8',\n",
    "            '20ff69117c3ad03a177cb47b7a3d6966', 'f140855f513dcf75e3b455684351fbe6',\n",
    "            'a72547450932263fae5aff76dc29ef1f', '28320f537e764e13b36492518aeebb10',\n",
    "            'bade81e9cdfd1389dfa9df5118b258d3', '523ee61f203b6af0d2e50805b7dc61b5',\n",
    "            'c1b479511ffd01f6e9f3ccf238311999', 'fe701532ade40d76bf1e550ac32dbd8c',\n",
    "            '88db44359c053d1989c43c0e69652975', '7c42e1852b5a3fa3b0bbc1fff431958c',\n",
    "            '69cdc714cc82357d6d14131061e80227', '3c6673e80b4f74dab2ce27530ae393e4',\n",
    "            '25d754f6b857dc6cabe02b263a4fa697', '05b5906aa7a7ef64195ca4f243853047',\n",
    "            '88d83f7e86e003079b222181b5d1b194', '4e7c58f42884ce032919b92a08c9fc99',\n",
    "            '09978ce4d848c0ac52556012354ea4db', '74906157273559b39569e8b700f1dd22',\n",
    "            'a3540cb52f999506df3147b758612733', 'd26448f9e42a1681b56a3011a4f78894'\n",
    "        ]), 'mb_pageview_dtl_MODEL_NAME'] = 'other'\n",
    "\n",
    "\n",
    "        # df_page.loc[~df_page['mb_pageview_dtl_MODEL_NAME'].isin([\n",
    "        #     'e0cb9e3e71029836e967b79c6142f269',\n",
    "        #     'a72547450932263fae5aff76dc29ef1f',\n",
    "        #     'f140855f513dcf75e3b455684351fbe6',\n",
    "        #     '28320f537e764e13b36492518aeebb10',\n",
    "        #     'c1b479511ffd01f6e9f3ccf238311999',\n",
    "        #     '88db44359c053d1989c43c0e69652975',\n",
    "        #     '69cdc714cc82357d6d14131061e80227',\n",
    "        #     '25d754f6b857dc6cabe02b263a4fa697',\n",
    "        #     '56d43ba7bbb458b3d35c7d4c7baeb6ae',\n",
    "        #     '88d83f7e86e003079b222181b5d1b194',\n",
    "        #     '69aa74a3b4600f4f8fea7c2a84341fcc',\n",
    "        #     '60c487f4d8fd11ab8a0f6c4693cf9c4d',\n",
    "        #     'e105090d949ce29deac739fc5baacd78',\n",
    "        #     '174c3e30602fd365f6150e9dfd8ff9bd',\n",
    "        #     'f8ddeb7e8daec0272411d5e6d87c5b64',\n",
    "        #     '29d9cc587abc53f069b7d190d6df093d',\n",
    "        #     '30634e79be05b2cbfc29a5f9c1f42d37',\n",
    "        #     '7242df74a95fdac5de33c9eadd03c03a',\n",
    "        #     '02bc6b84e219f1a395ff9dc585b0b7ba',\n",
    "        #     'ef8457a12dca26ad5392d14ca4580af9',\n",
    "        #     '9e8ac1a539884fae2905bf6db109d5ec',\n",
    "        #     '1b820a4d505e85c75db97c5d345814f8',\n",
    "        #     '411a981c85050eb93d0a8e6680700d8b',\n",
    "        #     '30316e25602736b2ee1d138a1b5fa2fd',\n",
    "        #     '4ad77d4343f100ddfa38d7e38933b8e1,'\n",
    "        #     '1197d2931ae48e03324f12810ad0f8e2'\n",
    "        # ]), 'mb_pageview_dtl_MODEL_NAME'] = 'other'\n",
    "            \n",
    "        df_page = df_page[df_page['mb_pageview_dtl_MODEL_NAME'] != 'other']\n",
    "        \n",
    "        \"\"\" 2 页面/模块拼接分组点击数趋势 \"\"\"\n",
    "        # 2.1 每日top60模块拼接下，页面拼接点击数趋势\n",
    "        df_feature, _ = get_all_id_category_features(\n",
    "                        df_feature, df_page, fea1='mb_pageview_dtl_MODEL_NAME', fea2='mb_pageview_dtl_REFERRER_TITLE_text',\n",
    "                        stats=['nunique']\n",
    "                    ) \n",
    "\n",
    "        \"\"\" 3 每月日点击数/日点击页面数最大天距今天数 \"\"\"\n",
    "        df_feature = get_max_cnt_days_to_now_by_model(df_feature, df_page)\n",
    "        return df_feature\n",
    "        \n",
    "    def get_max_cnt_days_to_now_by_model(df_feature, df):\n",
    "        # 每月top30模块日点击笔数/日点击页面数最大天距今天数\n",
    "        df1 = df.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", 'mb_pageview_dtl_MODEL_NAME'])[\"mb_pageview_dtl_REFERRER_TITLE_text\"].agg(['nunique'])    \n",
    "        df1 = df1.reset_index()        \n",
    "        df2 = df.groupby([\"CUST_NO\", \"date_days_to_now\", \"date_weeks_to_now\", \"date_months_to_now\", 'mb_pageview_dtl_MODEL_NAME'])[\"mb_pageview_dtl_REFERRER_TITLE_text\"].agg(['count'])    \n",
    "        df2 = df2.reset_index()\n",
    "\n",
    "        tmp_df_nunique = df1.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME']).agg({\"nunique\": \"max\"}).reset_index() # 最大点击次数\n",
    "        tmp_df_nunique = tmp_df_nunique.merge(df1[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'date_days_to_now', 'nunique']], on=[\"CUST_NO\", 'mb_pageview_dtl_MODEL_NAME', 'nunique'], how=\"inner\")\n",
    "        tmp_df_nunique = tmp_df_nunique.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME'])[\"date_days_to_now\"].min().to_frame(\"max_nunique_days_to_now\").reset_index()  # 取最近一天\n",
    "    \n",
    "        tmp_df_nunique = pd.pivot(data=tmp_df_nunique, index='CUST_NO', columns='mb_pageview_dtl_MODEL_NAME', values='max_nunique_days_to_now')\n",
    "        new_fea_cols = ['_'.join(['CUST_NO', 'max_nunique_days_to_now', str(col)]) for col in tmp_df_nunique.columns]\n",
    "        tmp_df_nunique.columns = new_fea_cols\n",
    "        tmp_df_nunique.reset_index(inplace=True)\n",
    "        \n",
    "        tmp_df_count = df2.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME']).agg({\"count\": \"max\"}).reset_index()\n",
    "        tmp_df_count = tmp_df_count.merge(df2[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'date_days_to_now', 'count']], on=[\"CUST_NO\", 'mb_pageview_dtl_MODEL_NAME', 'count'], how=\"inner\")\n",
    "        tmp_df_count = tmp_df_count.groupby(['CUST_NO', 'mb_pageview_dtl_MODEL_NAME'])[\"date_days_to_now\"].min().to_frame(\"max_count_days_to_now\").reset_index()  # 取最近一天\n",
    "    \n",
    "        tmp_df_count = pd.pivot(data=tmp_df_count, index='CUST_NO', columns='mb_pageview_dtl_MODEL_NAME', values='max_count_days_to_now')\n",
    "        new_fea_cols = ['_'.join(['CUST_NO', 'max_count_days_to_now', str(col)]) for col in tmp_df_count.columns]\n",
    "        tmp_df_count.columns = new_fea_cols\n",
    "        tmp_df_count.reset_index(inplace=True)\n",
    "\n",
    "        df_feature = df_feature.merge(tmp_df_nunique, on=\"CUST_NO\", how=\"left\")\n",
    "        df_feature = df_feature.merge(tmp_df_count, on=\"CUST_NO\", how=\"left\")\n",
    "            \n",
    "        return df_feature\n",
    "        \n",
    "    feature_train = df_train[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "    feature_test = df_test[[\"CUST_NO\"]].drop_duplicates(['CUST_NO']).copy().reset_index(drop=True)\n",
    "    \n",
    "    # 1.1 日期转换\n",
    "    df_train = get_days_to_now(df_train).copy()\n",
    "    df_test = get_days_to_now(df_test).copy()\n",
    "\n",
    "    # 2 点击模块拼接\n",
    "    # 2.1 训练集\n",
    "    df_page_train = df_train[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE',                \n",
    "        'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_page_train['mb_pageview_dtl_REFERRER_TITLE_text'] = df_train['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_train['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "    \n",
    "    # 2.2 测试集\n",
    "    df_page_test = df_test[['CUST_NO', 'mb_pageview_dtl_MODEL_NAME', 'mb_pageview_dtl_REFERRER_TITLE', 'mb_pageview_dtl_PAGE_TITLE', \n",
    "        'date_days_to_now', \"date_weeks_to_now\", 'date_months_to_now']].copy()\n",
    "    df_page_test['mb_pageview_dtl_REFERRER_TITLE_text'] = df_test['mb_pageview_dtl_PAGE_TITLE'].astype(str) + '_' + df_test['mb_pageview_dtl_REFERRER_TITLE'].astype(str)\n",
    "\n",
    "    # 2.3 筛选共有点击页面记录\n",
    "    common_word_page = set(df_page_train[\"mb_pageview_dtl_REFERRER_TITLE_text\"]).intersection(set(df_page_test[\"mb_pageview_dtl_REFERRER_TITLE_text\"]))\n",
    "    df_page_train = df_page_train[df_page_train['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word_page)].copy()\n",
    "    df_page_test = df_page_test[df_page_test['mb_pageview_dtl_REFERRER_TITLE_text'].isin(common_word_page)].copy()\n",
    "    print('len(common_word_page): {}'.format(len(common_word_page)))\n",
    "\n",
    "    # 4 模块/页面拼接分组统计\n",
    "    feature_train = gen_mb_join_op_unique_features_by_days(feature_train, df_page_train)\n",
    "    feature_test = gen_mb_join_op_unique_features_by_days(feature_test, df_page_test)\n",
    "\n",
    "    return feature_train, feature_test\n",
    "\n",
    "\n",
    "# 做一个近30天的\n",
    "mb_join_op_unique_feature_train, mb_join_op_unique_feature_test = gen_mb_all_join_op_unique_features_by_days(mb_pageview_dtl_train, mb_pageview_dtl_test_a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "ac8b1265-a826-4b18-b281-ac67b33091fa",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:49:24.516830Z",
     "iopub.status.busy": "2024-11-13T07:49:24.516540Z",
     "iopub.status.idle": "2024-11-13T07:49:26.533180Z",
     "msg_id": "090cb718-4733-4537-82aa-1cb656bc0c95",
     "shell.execute_reply": "2024-11-13T07:49:26.532281Z",
     "shell.execute_reply.started": "2024-11-13T07:49:24.516803Z"
    }
   },
   "outputs": [],
   "source": [
    "mb_all = pd.concat([mb_join_op_unique_feature_train,mb_join_op_unique_feature_test],axis=0).reset_index(drop=True)\n",
    "mb_all.to_csv(r'../process/mb_nunique.csv',index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa0cdaab-a97c-4ca2-9dbf-2d878f4a2a39",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T04:31:13.638041Z",
     "iopub.status.busy": "2024-11-13T04:31:13.637565Z",
     "iopub.status.idle": "2024-11-13T04:31:13.641589Z",
     "msg_id": "f05a70af-7ec7-41ed-b838-4f1ca24af4f8",
     "shell.execute_reply": "2024-11-13T04:31:13.640925Z",
     "shell.execute_reply.started": "2024-11-13T04:31:13.638012Z"
    }
   },
   "source": [
    "#  再跑一个GET_EMBEDDING.ipynb函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3203a2df-7d52-4412-a057-cac48a91c388",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f5e54726-cb7b-44e4-b4d9-bc725e5e9845",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "80447b1b-927c-4b67-8980-04e2f105b48b",
   "metadata": {},
   "source": [
    "## 数据读取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "id": "5cf1049e-dc95-4c02-a47d-12bfd4fe204f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T10:29:08.317257Z",
     "iopub.status.busy": "2024-11-13T10:29:08.316533Z",
     "iopub.status.idle": "2024-11-13T10:29:18.523022Z",
     "msg_id": "d2afb7ca-bfd9-4e32-8c51-9e535958286f",
     "shell.execute_reply": "2024-11-13T10:29:18.522272Z",
     "shell.execute_reply.started": "2024-11-13T10:29:08.317220Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "use df:  ['NATURE_1', 'NATURE_IBTF_1', 'NATURE_IBTF_2', 'ENTINFO_1', 'ENTINFO_3', 'ENTIINFO_ESDATE_1', 'APS_1_1', 'APS_2', 'APS_5', 'APS_IN_XZT_1', 'APS_OUT_XZT_1', 'APS_IN_OUT_XZT_1_1', 'MERCH_XZT_1_2', 'TRPAY_1', 'TRPAY_1_3', 'ASSET_1', 'ASSET_3_1', 'ASSET_4', 'mb_pag_ref_w2v', 'ENTIINFO_TARGETENCODE_1', 'mb_nunique']\n",
      "(60584, 692) (6230, 692) (60584,)\n"
     ]
    }
   ],
   "source": [
    "path = r'../contest'\n",
    "# ---------------------------  数据读取区域 ------------------------------\n",
    "X_test = pd.read_csv(path+r'/A/GTGSH_TARGET_A.csv')\n",
    "X_test['FLAG'] = np.nan\n",
    "X_train = pd.read_csv(path+r'/train/GTGSH_TARGET_TRAIN.csv')\n",
    "# ---------------------------  特征 ------------------------------\n",
    "path = r'../process/'\n",
    "# base_list = ['APS_1', 'APS_2', 'APS_4_1', 'ASSET_1', 'NATURE_1', 'PROD_HOLD_1', 'ENTINFO_1', 'ENTINFO_4', 'ASSET_3_4', 'IBTF_3', 'MERCH_2', 'PAGEVIEW_11', 'IBTF_1', 'ASSET_3_1', 'ENTINFO_3', 'APS_IN_XZT_1', 'APS_OUT_XZT_1', 'APS_IN_OUT_XZT_1', 'ENTINFO_6', 'APS_TFIDF_CON_1', 'APS_WORD2VEC_PAGE_TITLE_1', 'APS_WORD2VEC_REFERRER_TITLE_1','MERCH_4','TRPAY_1_3','TPAY_lcy_2','ENTIINFO_TARGETENCODE_1','NATURE_IBTF_1','NATURE_IBTF_2','ASSET_TPAY_3','kmeans_Label','MB_MERCH_MERGE_4']\n",
    "# base_list = ['APS_1', 'APS_2', 'APS_4_1', 'ASSET_1', 'NATURE_1', 'PROD_HOLD_1', 'ENTINFO_1', 'ENTINFO_4', 'ASSET_3_4', 'IBTF_3', 'MERCH_2', 'PAGEVIEW_11', \n",
    "#              'IBTF_1', 'ASSET_3_1', 'ENTINFO_3', 'APS_IN_XZT_1', 'APS_OUT_XZT_1', 'APS_IN_OUT_XZT_1', 'ENTINFO_6', 'APS_TFIDF_CON_1', 'APS_WORD2VEC_PAGE_TITLE_1',\n",
    "#              'APS_WORD2VEC_REFERRER_TITLE_1','MERCH_4','TRPAY_1_3','TRPAY_1','ENTIINFO_TARGETENCODE_1','NATURE_IBTF_1','NATURE_IBTF_2','ENTI_IBTF_CROSS_1','ENT_ASSET_lcy_2_1',\n",
    "#              'ENT_TPAY_lcy_2','ENTI_IBTF_CROSS_2']\n",
    "\n",
    "# 3610 \n",
    "base_list = ['NATURE_1','NATURE_IBTF_1','NATURE_IBTF_2','ENTINFO_1','ENTINFO_3','ENTIINFO_ESDATE_1','APS_1_1','APS_2','APS_5',\n",
    "             'APS_IN_XZT_1','APS_OUT_XZT_1','APS_IN_OUT_XZT_1_1',\n",
    "             'MERCH_XZT_1_2','TRPAY_1','TRPAY_1_3','ASSET_1','ASSET_3_1','ASSET_4','mb_pag_ref_w2v','ENTIINFO_TARGETENCODE_1','mb_nunique']\n",
    "add_df = []\n",
    "# add_df = ['ENTI_IBTF_CROSS_1','ENT_ASSET_lcy_1_1']\n",
    "# add_df = ['ENT_ASSET_lcy_1_1']\n",
    "\n",
    "# add_df = ['MB_TARGETENCODE_2','APS_TARGETENCODE_2']\n",
    "\n",
    "pick_list = list(dict.fromkeys(base_list+add_df))\n",
    "\n",
    "# # 替换 \"old_value\" 为 \"new_value\"\n",
    "# pick_list = [\"NATURE_IBTF_1_1\" if item == \"NATURE_IBTF_1\" else item for item in pick_list]\n",
    "\n",
    "print('use df: ', pick_list)\n",
    "\n",
    "pick_dfs = []\n",
    "for df_name in pick_list:\n",
    "    tmp = pd.read_csv(path+df_name+'.csv')\n",
    "    pick_dfs.append(tmp)\n",
    "\n",
    "# -------------------------- 数据拼接区域 ---------------------------------\n",
    "\n",
    "for tmp in pick_dfs:\n",
    "    X_train = pd.merge(X_train, tmp, on='CUST_NO',how='left')\n",
    "    X_test = pd.merge(X_test, tmp,on='CUST_NO',how='left')\n",
    "\n",
    "y = X_train['FLAG']\n",
    "print(X_train.shape,X_test.shape,y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "f03b4ce1-46ad-4f8c-a068-3cce3fded772",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:43:57.487648Z",
     "iopub.status.busy": "2024-11-13T09:43:57.487174Z",
     "iopub.status.idle": "2024-11-13T09:43:57.493538Z",
     "msg_id": "4e8296f2-77fa-4846-ad95-ad5e945bd5a6",
     "shell.execute_reply": "2024-11-13T09:43:57.492749Z",
     "shell.execute_reply.started": "2024-11-13T09:43:57.487618Z"
    }
   },
   "outputs": [],
   "source": [
    "X_train.rename(columns={'Unnamed: 0':'OTHER'},inplace=True)\n",
    "X_test.rename(columns={'Unnamed: 0':'OTHER'},inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "b7f94557-ac34-407e-adc0-079053314604",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:00:15.700767Z",
     "iopub.status.busy": "2024-11-13T09:00:15.700287Z",
     "iopub.status.idle": "2024-11-13T09:00:15.708981Z",
     "msg_id": "40e64c77-8589-4ead-bfdb-e48216606c38",
     "shell.execute_reply": "2024-11-13T09:00:15.708159Z",
     "shell.execute_reply.started": "2024-11-13T09:00:15.700736Z"
    }
   },
   "outputs": [],
   "source": [
    "def count_folders(path):\n",
    "    # 确保路径存在\n",
    "    if not os.path.exists(path):\n",
    "        # print(\"路径不存在\")\n",
    "        return 0\n",
    "\n",
    "    # 获取该路径下的所有文件和文件夹\n",
    "    items = os.listdir(path)\n",
    "\n",
    "    # 统计文件夹数量\n",
    "    folder_count = sum(os.path.isdir(os.path.join(path, item))\n",
    "                       for item in items)\n",
    "\n",
    "    return folder_count\n",
    "\n",
    "\n",
    "def save_res(dfs, save_path, model_name, key_value, compare_value=-np.inf):\n",
    "    if key_value >= compare_value:\n",
    "        pred_df, oof_df, feat_imp_df = dfs\n",
    "        folder_count = count_folders(save_path) + 1\n",
    "        new_name = f\"{model_name}_{folder_count}_{key_value}\"\n",
    "        \n",
    "        save_path_now = save_path + f\"/{new_name}/\"\n",
    "        if not os.path.exists(save_path_now):\n",
    "            os.makedirs(save_path_now)\n",
    "        print('save path: ', save_path_now)\n",
    "        # 预测结果保存\n",
    "        pred_df.to_csv(save_path_now +\n",
    "                       f\"{new_name}_pred.csv\", index=False)\n",
    "        # 训练结果保存\n",
    "        oof_df.to_csv(save_path_now +\n",
    "                      f\"{new_name}_oof.csv\", index=False)\n",
    "        # 特征重要性保存\n",
    "        feat_imp_df.to_csv(save_path_now +\n",
    "                           f\"{new_name}_feat.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "26372d7f-e61a-46ef-b3de-865ed9b506a6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:00:15.969422Z",
     "iopub.status.busy": "2024-11-13T09:00:15.969086Z",
     "iopub.status.idle": "2024-11-13T09:00:15.978591Z",
     "msg_id": "8176d1e7-e74e-4dfd-8006-763468cd6ea7",
     "shell.execute_reply": "2024-11-13T09:00:15.977903Z",
     "shell.execute_reply.started": "2024-11-13T09:00:15.969397Z"
    }
   },
   "outputs": [],
   "source": [
    "def do_metrics(y_true, y_pred):\n",
    "    precisions, recalls, thresholds = precision_recall_curve(y_true, y_pred)\n",
    "    f1_scores = (2 * precisions * recalls) / (precisions + recalls)\n",
    "    best_t = thresholds[np.argmax(f1_scores[np.isfinite(f1_scores)])]\n",
    "\n",
    "    y_1 = [1 if x >= best_t else 0 for x in y_pred]\n",
    "    clf_report1 = classification_report(y_true.values, y_1, digits=4)\n",
    "\n",
    "    accuracy = accuracy_score(y_true, y_1)\n",
    "    precision = precision_score(y_true, y_1)\n",
    "    recall = recall_score(y_true, y_1)\n",
    "\n",
    "    fpr, tpr, th = roc_curve(y_true, y_pred)\n",
    "\n",
    "    f1_scores = f1_score(y_true, y_1)\n",
    "    auc_scores = auc(fpr,tpr)\n",
    "    ks_scores = max(tpr-fpr)\n",
    "    num_1 = sum(y_1)\n",
    "    print('******************************')\n",
    "    print(f\"accuracy: {accuracy}\")\n",
    "    print(f\"precision: {precision}\")\n",
    "    print(f\"recall: {recall}\")\n",
    "    print(f\"auc: {auc_scores}\")\n",
    "    print(f\"F1: {f1_scores}\")\n",
    "    print(f\"ks: {ks_scores}\")\n",
    "    print(f\"最佳阈值:  {str(best_t)}\")\n",
    "    print('打印分类报告: ', clf_report1)\n",
    "    print('******************************')\n",
    "    return best_t, f1_scores, auc_scores, ks_scores, num_1\n",
    "\n",
    "# 环境固化\n",
    "def seed_everything(seed=2020):  # 这个函数调用后，可以保证环境内种子的一致性\n",
    "    seed = int(seed)\n",
    "    random.seed(seed)  # 勿删，保证相同种子出来的随机数一致\n",
    "    os.environ['PYTHONHASHSEED'] = str(seed)\n",
    "    np.random.seed(seed)\n",
    "seed_everything(666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "50609cdc-61c6-47a9-9e1d-b00cb8cefcec",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:00:17.829932Z",
     "iopub.status.busy": "2024-11-13T09:00:17.829474Z",
     "iopub.status.idle": "2024-11-13T09:00:17.838027Z",
     "msg_id": "43c156fa-d8ba-45dd-a4e9-420edd5889cb",
     "shell.execute_reply": "2024-11-13T09:00:17.837207Z",
     "shell.execute_reply.started": "2024-11-13T09:00:17.829902Z"
    }
   },
   "outputs": [],
   "source": [
    "def process_cate_cols(X_train, X_test, cate_cols):\n",
    "    ordinal_encoder = preprocessing.OrdinalEncoder()\n",
    "    X_train[cate_cols] = ordinal_encoder.fit_transform(\n",
    "        X_train[cate_cols])\n",
    "    X_test[cate_cols] = ordinal_encoder._transform(X_test[cate_cols], handle_unknown='ignore')[\n",
    "        0].astype(np.float64, copy=False)\n",
    "    return X_train, X_test\n",
    "\n",
    "# 绘制评估指标的变化曲线\n",
    "def plot_metric(evals_result):\n",
    "    train_word, valid_word = list(evals_result.keys())\n",
    "    plt.figure(figsize=(20, 5))\n",
    "    print(len(evals_result[train_word].keys()))\n",
    "    i = 1\n",
    "    for k in evals_result[train_word].keys():\n",
    "        ax = plt.subplot(1, len(evals_result[train_word].keys()), i)\n",
    "        ax.plot(evals_result[train_word][k], label=train_word)\n",
    "        ax.plot(evals_result[valid_word][k], label=valid_word)\n",
    "        # show the legend\n",
    "        ax.legend()\n",
    "        plt.title(k)\n",
    "        i += 1\n",
    "    plt.xlabel('Epochs')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "0da9dba6-9c62-4de9-89c8-00431a7180ac",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:49:39.963037Z",
     "iopub.status.busy": "2024-11-13T07:49:39.962640Z",
     "iopub.status.idle": "2024-11-13T07:49:39.971788Z",
     "msg_id": "98d44a42-8ab2-4f40-8425-56f2277aeb3c",
     "shell.execute_reply": "2024-11-13T07:49:39.971088Z",
     "shell.execute_reply.started": "2024-11-13T07:49:39.963012Z"
    }
   },
   "outputs": [],
   "source": [
    "def lgb_train(train_x, train_y, valid_x, valid_y,X_test, set_parameters, cate_cols, set_earlystop, feat_imp_df):\n",
    "    if set_parameters is None:\n",
    "        set_parameters = {\n",
    "            'learning_rate': 0.02,\n",
    "            'max_depth': 5,\n",
    "            'boosting_type': 'gbdt',\n",
    "            'objective': 'binary',\n",
    "            'metric': ['auc', 'binary_logloss', 'binary_error'],\n",
    "            'seed': 2024,\n",
    "            'num_leaves': 32,\n",
    "            'feature_fraction': 0.8,\n",
    "            'bagging_fraction': 0.8,\n",
    "            'bagging_freq': 5,\n",
    "            'bagging_seed': 1,\n",
    "            'feature_fraction_seed': 7,\n",
    "            'min_data_in_leaf': 20,\n",
    "            'verbose': -1,\n",
    "            'n_jobs': 50\n",
    "        }\n",
    "\n",
    "    dtrain = lgb.Dataset(train_x, label=train_y,\n",
    "                            categorical_feature=cate_cols)\n",
    "    dval = lgb.Dataset(valid_x, label=valid_y,\n",
    "                        categorical_feature=cate_cols)\n",
    "    evals_result = {}\n",
    "    # 设置回调函数\n",
    "    callbacks = [\n",
    "        log_evaluation(period=1000),  # 每n轮输出一次评估结果\n",
    "        # 如果验证集的误差在30次迭代内没有降低，则停止迭代\n",
    "        early_stopping(stopping_rounds=set_earlystop),\n",
    "        lgb.record_evaluation(evals_result)\n",
    "    ]\n",
    "\n",
    "    lgb_model = lgb.train(\n",
    "        set_parameters,\n",
    "        dtrain,\n",
    "        num_boost_round=10000,\n",
    "        valid_sets=[dtrain, dval],\n",
    "        # early_stopping_rounds=set_earlystop,\n",
    "        # verbose_eval=100,\n",
    "        callbacks=callbacks,\n",
    "    )\n",
    "\n",
    "    plot_metric(evals_result)\n",
    "    valid_predict_proba = lgb_model.predict(\n",
    "        valid_x, num_iteration=lgb_model.best_iteration)  # 本fold下对[本地验证集]的预测\n",
    "    prediction_cat_tmp = lgb_model.predict(\n",
    "        X_test, num_iteration=lgb_model.best_iteration)  # 本fold下对[测试集]的预测\n",
    "    # 特征重要性处理\n",
    "    feat_imp_df['imp'] += lgb_model.feature_importance()\n",
    "    feat_imp_df.loc[(feat_imp_df.imp == 0), 'cnt_0'] = feat_imp_df.loc[(\n",
    "        feat_imp_df.imp == 0), 'cnt_0'] + 1  # 计算单折的特征重要性，e.g.保守策略下，超过三折以上为0 才删\n",
    "    del lgb_model\n",
    "    return valid_predict_proba, prediction_cat_tmp, feat_imp_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5c96e3db-0acd-4ff6-ae90-6356c104f1b5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:49:39.973123Z",
     "iopub.status.busy": "2024-11-13T07:49:39.972880Z",
     "iopub.status.idle": "2024-11-13T07:49:39.982724Z",
     "msg_id": "e225809f-daf3-4e5f-9cab-086b4725b47f",
     "shell.execute_reply": "2024-11-13T07:49:39.982040Z",
     "shell.execute_reply.started": "2024-11-13T07:49:39.973101Z"
    }
   },
   "outputs": [],
   "source": [
    "def xgb_train(train_x, train_y, valid_x, valid_y,X_test, set_parameters, cate_cols, set_earlystop, feat_imp_df):\n",
    "    if set_parameters is None:\n",
    "        set_parameters = {\n",
    "            'learning_rate': 0.2,            # 学习率，控制每一步的步长，用于防止过拟合。典型值范围：0.01 - 0.1\n",
    "            'booster': 'gbtree',              # 提升方法，这里使用梯度提升树（Gradient Boosting Tree）\n",
    "            'objective': 'binary:logistic',   # 损失函数，这里使用逻辑回归，用于二分类任务\n",
    "            'max_leaves': 7,                # 每棵树的叶子节点数量，控制模型复杂度。较大值可以提高模型复杂度但可能导致过拟合\n",
    "            # 'verbosity': 0,                   # 控制 XGBoost 输出信息的详细程度，0表示无输出，1表示输出进度信息\n",
    "            'seed': 42,                       # 随机种子，用于重现模型的结果\n",
    "            'nthread': -1,                    # 并行运算的线程数量，-1表示使用所有可用的CPU核心\n",
    "            'colsample_bytree': 0.6,          # 每棵树随机选择的特征比例，用于增加模型的泛化能力\n",
    "            'subsample': 0.7,                 # 每次迭代时随机选择的样本比例，用于增加模型的泛化能力\n",
    "            'eval_metric': ['auc', 'logloss'],         # 评价指标\n",
    "            'lambda': 1,  # L2正则项\n",
    "            'alpha': 1,  # L1正则化项\n",
    "        }\n",
    "\n",
    "    # 创建 DMatrix 数据结构\n",
    "    dtrain = DMatrix(train_x, label=train_y,enable_categorical=True)\n",
    "    dval = DMatrix(valid_x, label=valid_y,enable_categorical=True)\n",
    "\n",
    "    evals = [(dtrain, 'train'), (dval, 'eval')]\n",
    "    evals_result = {}\n",
    "    xgb_model = xgb.train(set_parameters, dtrain, evals=evals, num_boost_round=10000,\n",
    "                            verbose_eval=500, early_stopping_rounds=set_earlystop, evals_result=evals_result)\n",
    "\n",
    "    plot_metric(evals_result)\n",
    "    valid_predict_proba = xgb_model.predict(\n",
    "        dval, iteration_range=(0, xgb_model.best_iteration))  # 本fold下对[本地验证集]的预测\n",
    "    prediction_cat_tmp = xgb_model.predict(\n",
    "        DMatrix(X_test,enable_categorical=True), iteration_range=(0, xgb_model.best_iteration))  # 本fold下对[测试集]的预测\n",
    "    # 特征重要性处理\n",
    "    feature_importance = pd.DataFrame(list(xgb_model.get_score(importance_type='weight').items()), columns=[\n",
    "        'Feature', 'Importance'])\n",
    "    for _, row in feature_importance.iterrows():\n",
    "        feat_imp_df.loc[feat_imp_df['feats']\n",
    "                        == row[0], 'imp'] += row[1]\n",
    "        if row[1] == 0:  # 计数：单折的特征重要性为0\n",
    "            feat_imp_df.loc[feat_imp_df['feats']\n",
    "                            == row[0], 'cnt_0'] += 1\n",
    "    del xgb_model\n",
    "    return valid_predict_proba, prediction_cat_tmp, feat_imp_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "23a30a35-5fee-4985-b7cb-2c5621fc41cd",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T07:49:39.984025Z",
     "iopub.status.busy": "2024-11-13T07:49:39.983787Z",
     "iopub.status.idle": "2024-11-13T07:49:39.991866Z",
     "msg_id": "c5187d88-8e26-497c-88d8-4eff09764753",
     "shell.execute_reply": "2024-11-13T07:49:39.991187Z",
     "shell.execute_reply.started": "2024-11-13T07:49:39.984002Z"
    },
    "jupyter": {
     "source_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "def cat_train(train_x, train_y, valid_x, valid_y,X_test, set_parameters, cate_cols, set_earlystop, feat_imp_df):\n",
    "    if set_parameters is None:\n",
    "        set_parameters = {\n",
    "            'learning_rate': 0.2,\n",
    "            'depth': 5,\n",
    "            'loss_function': 'Logloss',\n",
    "            'eval_metric': 'AUC',\n",
    "            'random_seed': 2024,\n",
    "            'l2_leaf_reg': 20,\n",
    "            'task_type': 'GPU',  # 或者 'CPU'\n",
    "            'devices': '0',  # 如果使用GPU的话\n",
    "            'verbose': 1000\n",
    "        }\n",
    "    ctrain = Pool(data=train_x, label=train_y,\n",
    "                    cat_features=cate_cols)\n",
    "    cval = Pool(data=valid_x, label=valid_y,\n",
    "                cat_features=cate_cols)\n",
    "\n",
    "    cat_model = CatBoostClassifier(**set_parameters)\n",
    "    cat_model.fit(ctrain, eval_set=cval, use_best_model=True,\n",
    "                    early_stopping_rounds=set_earlystop)\n",
    "\n",
    "    valid_predict_proba = cat_model.predict_proba(valid_x)[:, 1]\n",
    "    prediction_cat_tmp = cat_model.predict_proba(X_test)[:, 1]\n",
    "\n",
    "    # 特征重要性处理\n",
    "    feature_importance = cat_model.get_feature_importance(\n",
    "        prettified=True)\n",
    "    for row in feature_importance.itertuples():\n",
    "        feat_imp_df.loc[feat_imp_df['feats']\n",
    "                        == row[1], 'imp'] += row[2]\n",
    "        if row[2] == 0:  # 计数：单折的特征重要性为0\n",
    "            feat_imp_df.loc[feat_imp_df['feats']\n",
    "                            == row[1], 'cnt_0'] += 1\n",
    "\n",
    "    # 获取训练过程中的评估结果\n",
    "    evals_result = cat_model.get_evals_result()\n",
    "    plot_metric(evals_result)\n",
    "    del cat_model\n",
    "    return valid_predict_proba, prediction_cat_tmp, feat_imp_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "263bb83c-6f37-47fe-828a-14a3d8c9cd11",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:00:23.802244Z",
     "iopub.status.busy": "2024-11-13T09:00:23.801680Z",
     "iopub.status.idle": "2024-11-13T09:00:23.824566Z",
     "msg_id": "a1ac8471-387e-47cd-afab-34a78a033247",
     "shell.execute_reply": "2024-11-13T09:00:23.823728Z",
     "shell.execute_reply.started": "2024-11-13T09:00:23.802208Z"
    }
   },
   "outputs": [],
   "source": [
    "def model_train(X_train, X_test, y, use_feats, cate_cols, set_model='lgb', set_seeds=[24], set_parameters=None, set_fold=5, set_earlystop=300, save_path=None):\n",
    "    # train_df = all_data[~all_data[target].isnull() == True].copy().reset_index(drop=True)\n",
    "    # valid_df = all_data[all_data[target].isnull() == True].copy().reset_index(drop=True)\n",
    "    # X_train = train_df[use_feats].reset_index(drop=True)\n",
    "    # X_test = valid_df[use_feats].reset_index(drop=True)\n",
    "    # y = train_df[target].reset_index(drop=True)\n",
    "    print(\"use model:\\t\", set_model)\n",
    "    start_time = datetime.datetime.now()\n",
    "    print(\"start time:\\t\", start_time.strftime('%Y-%m-%d %H:%M:%S'))\n",
    "    print(\"train data shape:\\t\", X_train.shape)\n",
    "    print(\"test data shape:\\t\", X_test.shape)\n",
    "\n",
    "    seeds = set_seeds\n",
    "    # seeds = [24, 2024, 666, 888, 4096, 2048, 1024, 2015, 1015, 820]\n",
    "    num_model_seed = len(seeds)\n",
    "\n",
    "    oof = np.zeros(X_train.shape[0])\n",
    "    oof_seed_list = []  # 存储若干种子下的训练结果\n",
    "    prediction = np.zeros(X_test.shape[0])\n",
    "    prediction_vote = np.zeros(X_test.shape[0])\n",
    "    pred_seed_list = []  # 存储若干种子下的预测结果\n",
    "\n",
    "    feat_imp_df = pd.DataFrame(\n",
    "        {'feats': use_feats, 'imp': 0, 'cnt_0': 0})  # 用于记录特征重要性、有多少折的重要性=0\n",
    "\n",
    "    avg_f1_scores = []\n",
    "    avg_auc_scores = []\n",
    "    avg_ks_scores = []\n",
    "\n",
    "    for model_seed in range(num_model_seed):\n",
    "        print('seed = ', seeds[model_seed],\n",
    "              \"--------------------------------------------------------------------------------------------\")\n",
    "        oof_cat = np.zeros(X_train.shape[0])\n",
    "        prediction_cat = np.zeros(X_test.shape[0])\n",
    "        skf = StratifiedKFold(\n",
    "            n_splits=set_fold, random_state=seeds[model_seed], shuffle=True)\n",
    "\n",
    "        for fold_n, (train_index, valid_index) in enumerate(skf.split(X_train, y)):\n",
    "            print('fold = ', fold_n,\n",
    "                  \"-----------------------------------------------------------------------------------------\")\n",
    "            train_x, valid_x, train_y, valid_y = X_train[use_feats].iloc[\n",
    "                train_index], X_train[use_feats].iloc[valid_index], y.iloc[train_index], y.iloc[valid_index]\n",
    "\n",
    "            # lgb model\n",
    "            if set_model == 'lgb':\n",
    "                valid_predict_proba, prediction_cat_tmp, feat_imp_df = lgb_train(\n",
    "                    train_x, train_y, valid_x, valid_y,X_test[use_feats], set_parameters, cate_cols, set_earlystop, feat_imp_df)\n",
    "        \n",
    "            # cat model\n",
    "            if set_model == 'cat':\n",
    "                valid_predict_proba, prediction_cat_tmp, feat_imp_df = cat_train(\n",
    "                    train_x, train_y, valid_x, valid_y,X_test[use_feats], set_parameters, cate_cols, set_earlystop, feat_imp_df)\n",
    "\n",
    "            # xgb model\n",
    "            if set_model == 'xgb':\n",
    "                valid_predict_proba, prediction_cat_tmp, feat_imp_df = xgb_train(\n",
    "                    train_x, train_y, valid_x, valid_y,X_test[use_feats], set_parameters, cate_cols, set_earlystop, feat_imp_df)\n",
    "\n",
    "            # 处理输出\n",
    "            oof_cat[valid_index] += valid_predict_proba\n",
    "            prediction_cat += prediction_cat_tmp / set_fold\n",
    "\n",
    "            # 最佳阈值处理，用于累计得到投票结果\n",
    "            # 1、查找本轮的最佳阈值\n",
    "            # 利用本地验证集的标签以及对应的预测结果，算得本轮的最佳阈值best_t\n",
    "            best_t_tmp, current_f1, current_auc, current_ks, current_lable1 = do_metrics(\n",
    "                valid_y, valid_predict_proba)\n",
    "            print(\n",
    "                f\"[seed_{seeds[model_seed]} fold_{fold_n + 1}] | best_t: {best_t_tmp} F1: {current_f1} AUC: {current_auc} KS: {current_ks} Label1: {current_lable1}\")\n",
    "            # 2、得到本轮的0/1判断，用以后续的投票\n",
    "            # 利用上面的best_t_tmp进行0/1划分，得到本fold的分类结果\n",
    "            prediction_cat_tmp_voted = [\n",
    "                1 if x >= best_t_tmp else 0 for x in prediction_cat_tmp]\n",
    "            prediction_vote += prediction_cat_tmp_voted\n",
    "\n",
    "            avg_f1_scores.append(current_f1)\n",
    "            avg_auc_scores.append(current_auc)\n",
    "            avg_ks_scores.append(current_ks)\n",
    "\n",
    "            del train_x, valid_x, train_y, valid_y, prediction_cat_tmp, prediction_cat_tmp_voted\n",
    "\n",
    "        oof += oof_cat / num_model_seed\n",
    "        prediction += prediction_cat / num_model_seed\n",
    "        pred_seed_list.append(prediction_cat)  # 存储本种子下的预测结果\n",
    "        oof_seed_list.append(oof_cat)\n",
    "\n",
    "    end_time = datetime.datetime.now()\n",
    "    print(\"*******************************************************************************************************************\")\n",
    "\n",
    "    # 计算平均的F1、AUC和KS分数\n",
    "    avg_f1 = sum(avg_f1_scores) / len(avg_f1_scores)\n",
    "    avg_auc = sum(avg_auc_scores) / len(avg_auc_scores)\n",
    "    avg_ks = sum(avg_ks_scores) / len(avg_ks_scores)\n",
    "\n",
    "\n",
    "    # 利用整个训练集原本的标签y和训练完所有折后得到的对整个训练集的预测oof，得到“全局”的best_t\n",
    "    # 并根据全局best_t，对整个预测集的prediction进行最佳阈值划分0/1，得到prediction_with_best_t\n",
    "    best_t_all, current_f1, current_auc, current_ks, current_lable1 = do_metrics(\n",
    "        y, oof)\n",
    "\n",
    "    # 综合全局的best_t的预测结果\n",
    "    prediction_with_best_t = [1 if x >= best_t_all else 0 for x in prediction]\n",
    "\n",
    "    print(\"耗时: {}\".format(end_time - start_time))\n",
    "    print(\n",
    "        f\"[平均评估] | F1: {avg_f1:.4f} AUC: {avg_auc:.4f} KS: {avg_ks:.4f}\")\n",
    "    print(\n",
    "        f\"[全局评估] | F1: {current_f1:.4f} AUC: {current_auc:.4f} KS: {current_ks:.4f}\")\n",
    "    print(\n",
    "        f\"[1的个数]  | train: {current_lable1}/6338 test: {sum(prediction_with_best_t)} best_t: {best_t_all}\")\n",
    "\n",
    "    pred_df = pd.DataFrame(\n",
    "        {'prediction': prediction, 'prediction_with_best_t': prediction_with_best_t, 'prediction_vote': prediction_vote})\n",
    "\n",
    "    oof_df = pd.DataFrame({'oof': oof, 'y': y})\n",
    "\n",
    "    print_auc = round(current_auc, 4)\n",
    "    if save_path is not None:\n",
    "        save_res([pred_df, oof_df, feat_imp_df],\n",
    "                 save_path, set_model, print_auc, -np.inf)\n",
    "\n",
    "    gc.collect()\n",
    "    return [pred_df, oof_df, feat_imp_df], print_auc"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d13cd837-ea18-430e-8539-103ed5f635ed",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-10-28T07:25:31.565942Z",
     "iopub.status.busy": "2024-10-28T07:25:31.565421Z",
     "iopub.status.idle": "2024-10-28T07:25:31.570357Z",
     "msg_id": "4aeabb7a-28cb-4008-b3cc-4ab4f992462c",
     "shell.execute_reply": "2024-10-28T07:25:31.569682Z",
     "shell.execute_reply.started": "2024-10-28T07:25:31.565910Z"
    }
   },
   "source": [
    "## 开始训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "2cd95916-2638-4fb2-a2ac-cb0df320c169",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-02T08:59:08.475071Z",
     "iopub.status.busy": "2024-11-02T08:59:08.474749Z",
     "iopub.status.idle": "2024-11-02T08:59:08.477938Z",
     "msg_id": "f53d93ea-6431-4001-b1d7-931ef34c320a",
     "shell.execute_reply": "2024-11-02T08:59:08.477339Z",
     "shell.execute_reply.started": "2024-11-02T08:59:08.475047Z"
    }
   },
   "outputs": [],
   "source": [
    "# with open('../null_imp/null_5.txt','rb') as file:\n",
    "#     remove_cols = pickle.load(file) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "id": "61e10d29-5017-4254-adeb-7265fb22a646",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-12T07:06:46.030691Z",
     "iopub.status.busy": "2024-11-12T07:06:46.030206Z",
     "iopub.status.idle": "2024-11-12T07:06:46.034516Z",
     "msg_id": "0c694163-0964-4578-960f-82ae6e24e1a1",
     "shell.execute_reply": "2024-11-12T07:06:46.033721Z",
     "shell.execute_reply.started": "2024-11-12T07:06:46.030658Z"
    }
   },
   "outputs": [],
   "source": [
    "remove_cols = []"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d57333e7-4935-4ea7-b659-0f34f94a8ef3",
   "metadata": {},
   "source": [
    "## baseline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "id": "e5651a4a-1890-4051-a350-79b074d0954b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T10:24:56.707612Z",
     "iopub.status.busy": "2024-11-13T10:24:56.707259Z",
     "iopub.status.idle": "2024-11-13T10:28:08.119060Z",
     "msg_id": "08c60f58-0c91-417f-8268-62819334ec9a",
     "shell.execute_reply": "2024-11-13T10:28:08.118309Z",
     "shell.execute_reply.started": "2024-11-13T10:24:56.707585Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "use model:\t cat\n",
      "start time:\t 2024-11-13 18:24:56\n",
      "train data shape:\t (60584, 708)\n",
      "test data shape:\t (6230, 708)\n",
      "seed =  24 --------------------------------------------------------------------------------------------\n",
      "fold =  0 -----------------------------------------------------------------------------------------\n",
      "0:\ttest: 0.6735612\tbest: 0.6735612 (0)\ttotal: 33.1ms\tremaining: 5m 30s\n",
      "1000:\ttest: 0.7826439\tbest: 0.7829696 (974)\ttotal: 22.5s\tremaining: 3m 22s\n",
      "Stopped by overfitting detector  (200 iterations wait)\n",
      "\n",
      "bestTest = 0.7846313546\n",
      "bestIteration = 1702\n",
      "\n",
      "Shrink model to first 1703 iterations.\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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1FhfY3E1AAAAAAAAAAAMLIQgg1yTkSNJ8jcQggAAAAAAAAAAkIoQZJBrNnIlSf5GlsMCAAAAAAAAgKFk3Lhxuuuuu5LvDcPQ008/3en+mzdvlmEYWrt2ba+um6nz9AeH1QWgd/z2XCksBZtqrS4FAAAAAAAAAGChnTt3qqioKKPnvPDCC1VbW5sWrowePVo7d+5USUlJRq/VFwhBBjm/PV8KS+HmWqtLAQAAAAAAAABYqLy8vF+uY7fb++1avcVyWINcyJknSYq01FlcCQAAAAAAAAAMEKYpBZv6/2GaXS7xwQcf1IgRIxSNRtPGzz77bF100UXauHGjzj77bJWVlSkvL09HH320XnzxxX2es+1yWKtXr9aRRx4pj8ej6dOn65133knbPxKJ6OKLL9b48ePl9Xo1adIk/eY3v0luX7x4sR599FE988wzMgxDhmHolVde6XA5rFdffVXHHHOM3G63KioqdMMNNygcDie3z5o1S9dcc41++MMfqri4WOXl5Vq8eHGXf149xUyQQS7izJckmYQgAAAAAAAAABATapZuG9H/1/3RDsmV26Vdv/GNb+jqq6/Wyy+/rFNOOUWSVFNTo+XLl2vZsmVqbGzUGWecoZ/97Gdyu936wx/+oDPPPFPr16/XmDFj9nv+xsZGffnLX9app56qxx57TJs2bdK1116btk80GtWoUaP05JNPatiwYXr99dd16aWXqqKiQt/85jd13XXXad26daqvr9fDDz8sSSouLtaOHTvSzvP555/rjDPO0IUXXqg//OEP+vjjj3XJJZfI4/GkBR2PPvqoFi5cqDfeeEOrVq3ShRdeqOOOO06nnnpql35mPUEIMshFXLEQRIF6awsBAAAAAAAAAHRZUVGR5s6dqz//+c/JEOSpp55SSUmJvvjFL8pms2nq1KnJ/X/yk5/o73//u5599lldddVV+z3/n//8Z0WjUT300EPyeDw69NBDtX37dl1++eXJfZxOp2655Zbk+/Hjx2vVqlX661//qm9+85vKy8uT1+tVIBDY5/JX9957r0aPHq3f/va3MgxDBx98sHbs2KHrr79eN910k2y22KJUU6ZM0c033yxJmjhxon77299qxYoVhCDYB3eBJMkWJAQBAAAAAAAAAEmSMyc2K8OK63bDvHnzdMkll+jee++V2+3Wn/70J33rW9+SzWZTY2OjFi9erOeee047d+5UOBxWS0uLtm7d2qVzr1u3TlOmTJHH40mOzZw5s91+99xzj5YuXaqtW7eqpaVFwWBQRxxxRLc+x7p16zRz5kwZhpEcO+6449TY2Kjt27cnZ65MmTIl7biKigpVV1d361rdRQgy2HliIYgj2GBxIQAAAAAAAAAwQBhGl5elstKZZ54p0zT13HPP6eijj9b//d//6de//rUk6brrrtMLL7ygX/7yl5owYYK8Xq++/vWvKxgMZuz6jz/+uK677jr96le/0syZM5Wfn6877rhDb7zxRsaukcrpdKa9NwyjXU+UTCMEGeTsOYWSJFeImSAAAAAAAAAAMJh4PB599atf1Z/+9Cdt2LBBkyZN0lFHHSVJWrlypS688EJ95StfkRTr8bF58+Yun3vy5Mn64x//KL/fn5wN8p///Cdtn5UrV+rYY4/VFVdckRzbuHFj2j4ul0uRSGS/1/qf//kfmaaZnA2ycuVK5efna9SoUV2uuS/YLL06es2ZVyRJckcaLa4EAAAAAAAAANBd8+bN03PPPaelS5dq3rx5yfGJEyfqb3/7m9auXat3331X3/72t7s1a+Lb3/62DMPQJZdcoo8++kjLli3TL3/5y7R9Jk6cqLfeekvPP/+8PvnkE914441688030/YZN26c3nvvPa1fv167d+9WKBRqd60rrrhC27Zt09VXX62PP/5YzzzzjG6++WYtXLgw2Q/EKoQgg5wrNxaCeAlBAAAAAAAAAGDQOfnkk1VcXKz169fr29/+dnL8zjvvVFFRkY499lideeaZmjNnTnKWSFfk5eXpH//4h95//30deeSR+u///m/9/Oc/T9vnu9/9rr761a/q3HPP1YwZM7Rnz560WSGSdMkll2jSpEmaPn26hg8frpUrV7a71siRI7Vs2TKtXr1aU6dO1WWXXaaLL75YP/7xj7v508g8wzRN0+oi9qe+vl4FBQWqq6uTz+ezupwB5bOPVuuAv56qWuWrcPF2q8sBAAAAAAAAgH7l9/u1adMmjR8/Pq0JOAa/ff3adjU3YCbIIJfjK5Ek5ZlNMvu4gQwAAAAAAAAAAIMJIcggl18YC0EcRlQtTXUWVwMAAAAAAAAAwMBBCDLI5eTkKWjaJUkNtbstrgYAAAAAAAAAgIGDEGSQM2w2NRh5kqTm+hqLqwEAAAAAAAAAYOAgBMkCTfEQxF+/x+JKAAAAAAAAAMAapmlaXQIyLBO/poQgWaDFHgtBAo3MBAEAAAAAAAAwtDidTklSc3OzxZUg0xK/polf455wZKoYWMfvyJfCUrhpr9WlAAAAAAAAAEC/stvtKiwsVHV1tSQpJydHhmFYXBV6wzRNNTc3q7q6WoWFhbLb7T0+FyFIFgg5fZJfihCCAAAAAAAAABiCysvLJSkZhCA7FBYWJn9te4oQJAuEXT5JkumvtbYQAAAAAAAAALCAYRiqqKhQaWmpQqGQ1eUgA5xOZ69mgCQQgmSBqLtQkmT466wtBAAAAAAAAAAsZLfbM/IP58geNEbPAoanQJJkD9ZbXAkAAAAAAAAAAAMHIUgWsOUUSZKchCAAAAAAAAAAACQRgmQBe24sBHGHCUEAAAAAAAAAAEggBMkC7rxYCOKNNFhcCQAAAAAAAAAAAwchSBZw5xVLknKiTRZXAgAAAAAAAADAwEEIkgVyCkokSXlmo8WVAAAAAAAAAAAwcBCCZIHcgmGSJK8RVCjQYnE1AAAAAAAAAAAMDIQgWSC/oFhR05AkNdbtsbgaAAAAAAAAAAAGBkKQLOBwONSgHElSU91ui6sBAAAAAAAAAGBgIATJEo22PElScy0hCAAAAAAAAAAAEiFI1mi0F0iS/PW7LK4EAAAAAAAAAICBgRAkS7Q4CiVJQUIQAAAAAAAAAAAk9TAEueeeezRu3Dh5PB7NmDFDq1ev3uf+tbW1uvLKK1VRUSG3262DDjpIy5Yt61HB6FjQVSRJijaxHBYAAAAAAAAAAJLk6O4BTzzxhBYuXKj7779fM2bM0F133aU5c+Zo/fr1Ki0tbbd/MBjUqaeeqtLSUj311FMaOXKktmzZosLCwkzUj7iIp0iql8ymPVaXAgAAAAAAAADAgNDtEOTOO+/UJZdcogULFkiS7r//fj333HNaunSpbrjhhnb7L126VDU1NXr99dfldDolSePGjdvnNQKBgAKBQPJ9fX19d8sccsycYZIku7/G4koAAAAAAAAAABgYurUcVjAY1Jo1azR79uzWE9hsmj17tlatWtXhMc8++6xmzpypK6+8UmVlZTrssMN02223KRKJdHqdJUuWqKCgIPkYPXp0d8ockmy5sRDEGdhrcSUAAAAAAAAAAAwM3QpBdu/erUgkorKysrTxsrIyVVZWdnjMZ599pqeeekqRSETLli3TjTfeqF/96lf66U9/2ul1Fi1apLq6uuRj27Zt3SlzSHLmD5ckeUK11hYCAAAAAAAAAMAA0e3lsLorGo2qtLRUDz74oOx2u6ZNm6bPP/9cd9xxh26++eYOj3G73XK73X1dWlZx+2IhSG6kzuJKAAAAAAAAAAAYGLoVgpSUlMhut6uqqiptvKqqSuXl5R0eU1FRIafTKbvdnhybPHmyKisrFQwG5XK5elA22sotis3OyY/SPwUAAAAAAAAAAKmby2G5XC5NmzZNK1asSI5Fo1GtWLFCM2fO7PCY4447Ths2bFA0Gk2OffLJJ6qoqCAAyaC84lJJUoEaFQ2HLK4GAAAAAAAAAADrdSsEkaSFCxfqd7/7nR599FGtW7dOl19+uZqamrRgwQJJ0vz587Vo0aLk/pdffrlqamp07bXX6pNPPtFzzz2n2267TVdeeWXmPgVUWFyqqGlIkhr2VltcDQAAAAAAAAAA1ut2T5Bzzz1Xu3bt0k033aTKykodccQRWr58ebJZ+tatW2WztWYro0eP1vPPP6//+q//0pQpUzRy5Ehde+21uv766zP3KSCn06VaI1eFalR9TZUKho+0uiQAAAAAAAAAACxlmKZpWl3E/tTX16ugoEB1dXXy+XxWlzNgbb1lssaYO7R+7uOaNGOu1eUAAAAAAAAAANAnupobdHs5LAxcTfYCSZK/bpfFlQAAAAAAAAAAYD1CkCzidxZKkkINu60tBAAAAAAAAACAAYAQJIsE3UWSpEgjIQgAAAAAAAAAAIQgWSTiKZYkGc17LK4EAAAAAAAAAADrEYJkk5xhkiS7f6/FhQAAAAAAAAAAYD1CkCxiz42FIK4gIQgAAAAAAAAAAIQgWcTpGy5J8oRqrS0EAAAAAAAAAIABgBAki3gKSiVJOZF6iysBAAAAAAAAAMB6hCBZJLcwFoL4zDqLKwEAAAAAAAAAwHqEIFnEN6xckpSvFoWDfourAQAAAAAAAADAWoQgWcRXOExhM/ZLWldTbXE1AAAAAAAAAABYixAki9jtdtUZ+ZKkxppKi6sBAAAAAAAAAMBahCBZpsHmkyQ11zITBAAAAAAAAAAwtBGCZJkme4EkyV+/y+JKAAAAAAAAAACwFiFIlvE7iyRJofrdFlcCAAAAAAAAAIC1CEGyTNgdC0HMZkIQAAAAAAAAAMDQRgiSZSLe4tiL5hprCwEAAAAAAAAAwGKEIFnGyImFIA4/IQgAAAAAAAAAYGgjBMkytrwSSZIruNfiSgAAAAAAAAAAsBYhSJZx+4ZLkryhWmsLAQAAAAAAAADAYoQgWcZTUCpJyovWW1wJAAAAAAAAAADWIgTJMnlFZZIkHyEIAAAAAAAAAGCIIwTJMvnFsRAkxwgo0NJgcTUAAAAAAAAAAFiHECTL+HyFCpgOSVLd7iqLqwEAAAAAAAAAwDqEIFnGsNlUa/gkSY01lRZXAwAAAAAAAACAdQhBslCDvVCS1LSXEAQAAAAAAAAAMHQRgmShZkexJClYRwgCAAAAAAAAABi6CEGykN89TJIUaai2uBIAAAAAAAAAAKxDCJKFwt5YCGI27rK4EgAAAAAAAAAArEMIko1yh0uSHC27LS4EAAAAAAAAAADrEIJkIXt+qSTJHdhjcSUAAAAAAAAAAFiHECQLuQrKJEne0F6LKwEAAAAAAAAAwDqEIFkot6hckuSLEIIAAAAAAAAAAIYuQpAslFcyQpJUaNbLjEYsrgYAAAAAAAAAAGsQgmShongI4jQiaqijLwgAAAAAAAAAYGgiBMlCXq9XdWauJKl+1w6LqwEAAAAAAAAAwBqEIFmqzlYgSWqsIQQBAAAAAAAAAAxNhCBZqsFRJElqqa2yuBIAAAAAAAAAAKxBCJKl/K5iSVKojhAEAAAAAAAAADA0EYJkqZBnmCTJbNxlcSUAAAAAAAAAAFiDECRLRXOGS5JszYQgAAAAAAAAAIChiRAkSxn5ZZIkVwshCAAAAAAAAABgaCIEyVKuwpGSpJwgIQgAAAAAAAAAYGgiBMlSOSWjJEmF4T0WVwIAAAAAAAAAgDUIQbJUYdkYSVKxuVdmJGxxNQAAAAAAAAAA9D9CkCw1bPhIRUxDdsNU7e4dVpcDAAAAAAAAAEC/IwTJUi6XUzVGoSSptmqbtcUAAAAAAAAAAGABQpAsttc+TJLUuJsQBAAAAAAAAAAw9BCCZLEmV4kkKbCX5bAAAAAAAAAAAEMPIUgWC3jKJEmROkIQAAAAAAAAAMDQQwiSxaJ5sRDE1lRpcSUAAAAAAAAAAPQ/QpAsZvjKJUmull0WVwIAAAAAAAAAQP8jBMli7qKRkqTc4G6LKwEAAAAAAAAAoP8RgmSxvGGjJEmFYUIQAAAAAAAAAMDQQwiSxQrLxkiSis06RcMhi6sBAAAAAAAAAKB/EYJkseLSEQqbNtkMU3urP7e6HAAAAAAAAAAA+hUhSBZzOBzaYxRJkmqrt1pcDQAAAAAAAAAA/YsQJMvV2YslSU17tltcCQAAAAAAAAAA/YsQJMs1uYZLkgI1OyyuBAAAAAAAAACA/kUIkuUCOaWSpGj9TosrAQAAAAAAAACgfxGCZLlIbrkkydZUaXElAAAAAAAAAAD0L0KQLGf3jZAkeVqqLa4EAAAAAAAAAID+1aMQ5J577tG4cePk8Xg0Y8YMrV69utN9H3nkERmGkfbweDw9Lhjd4ymukCTlBndZXAkAAAAAAAAAAP2r2yHIE088oYULF+rmm2/W22+/ralTp2rOnDmqru58poHP59POnTuTjy1btvSqaHRd7vCxkqTiyG6LKwEAAAAAAAAAoH91OwS58847dckll2jBggU65JBDdP/99ysnJ0dLly7t9BjDMFReXp58lJWV7fMagUBA9fX1aQ/0TMnIAyVJhWqQv4mfIwAAAAAAAABg6OhWCBIMBrVmzRrNnj279QQ2m2bPnq1Vq1Z1elxjY6PGjh2r0aNH6+yzz9aHH364z+ssWbJEBQUFycfo0aO7UyZSFBYNU6PplSTt2fGZxdUAAAAAAAAAANB/uhWC7N69W5FIpN1MjrKyMlVWVnZ4zKRJk7R06VI988wzeuyxxxSNRnXsscdq+/btnV5n0aJFqqurSz62bdvWnTKRwjAM7bIPlyTVVm62thgAAAAAAAAAAPqRo68vMHPmTM2cOTP5/thjj9XkyZP1wAMP6Cc/+UmHx7jdbrnd7r4ubciod5VJ/q1q3rXZ6lIAAAAAAAAAAOg33ZoJUlJSIrvdrqqqqrTxqqoqlZeXd+kcTqdTRx55pDZs2NCdS6MXWnJGSJKiezuffQMAAAAAAAAAQLbpVgjicrk0bdo0rVixIjkWjUa1YsWKtNke+xKJRPT++++roqKie5Wix6L5sRDE3kAIAgAAAAAAAAAYOrq9HNbChQt1wQUXaPr06TrmmGN01113qampSQsWLJAkzZ8/XyNHjtSSJUskSbfeequ+8IUvaMKECaqtrdUdd9yhLVu26Dvf+U5mPwk65SgaI22RPC0d920BAAAAAAAAACAbdTsEOffcc7Vr1y7ddNNNqqys1BFHHKHly5cnm6Vv3bpVNlvrBJO9e/fqkksuUWVlpYqKijRt2jS9/vrrOuSQQzL3KbBPOcPHSpIKglX72RMAAAAAAAAAgOxhmKZpWl3E/tTX16ugoEB1dXXy+XxWlzPobN/4kUb9caYCplOum6tl2Lq1ChoAAAAAAAAAAANKV3MD/jV8CCgZMU5R05DbCKl2906rywEAAAAAAAAAoF8QggwBHm+O9hiFkqQ9Oz6zthgAAAAAAAAAAPoJIcgQUeMolSQ1VG2yuBIAAAAAAAAAAPoHIcgQ0eipkCQFdm+2thAAAAAAAAAAAPoJIcgQEcwfJUkyardYXAkAAAAAAAAAAP2DEGSIMIrGSZLcTZ9bWwgAAAAAAAAAAP2EEGSI8A4fL0kq8O+0uBIAAAAAAAAAAPoHIcgQUThigiSpNFIpMxq1uBoAAAAAAAAAAPoeIcgQUTY6FoLkGn7V1VRbXA0AAAAAAAAAAH2PEGSI8OTkabcKJUm7tn9qbTEAAAAAAAAAAPQDQpAhZI+jXJJUv3ODxZUAAAAAAAAAAND3CEGGkAbvSElScPdmawsBAAAAAAAAAKAfEIIMIWHfKEmSUbfV4koAAAAAAAAAAOh7hCBDiL1orCTJ27Td4koAAAAAAAAAAOh7hCBDiLfsQElSoX+HxZUAAAAAAAAAAND3CEGGkGGjD5YkVUQrFQ6FLK4GAAAAAAAAAIC+RQgyhJSNmqCg6ZDLCKty+0arywEAAAAAAAAAoE8RggwhNodDlfZySdKeLR9ZXA0AAAAAAAAAAH2LEGSI2esZLUlqrvzE4koAAAAAAAAAAOhbhCBDjN83Lvai5jNL6wAAAAAAAAAAoK8RggwxtmETJEne+s3WFgIAAAAAAAAAQB8jBBlicioOkiQVB7ZZXAkAAAAAAAAAAH2LEGSIGT72EElSRbRKoVDQ4moAAAAAAAAAAOg7hCBDzPCR4+U3nXIaEe3cQnN0AAAAAAAAAED2IgQZYgybXZX2CklSzbZ1FlcDAAAAAAAAAEDfIQQZgmq9oyVJLTs/tbgSAAAAAAAAAAD6DiHIEBTwjY+9qNlobSEAAAAAAAAAAPQhQpAhyF4yQZKU07jZ2kIAAAAAAAAAAOhDhCBDUN6ISZKkYYHtFlcCAAAAAAAAAEDfIQQZgoaPPUSSVB6tViDgt7gaAAAAAAAAAAD6BiHIEFRcPkbNplsOI6qdm9dbXQ4AAAAAAAAAAH2CEGQIMmw2VTkqJEk129ZZXA0AAAAAAAAAAH2DEGSIqvWOkST5qz6xuBIAAAAAAAAAAPoGIcgQFSoYL0kyaj6zuBIAAAAAAAAAAPoGIcgQZR8+QZKU27jF4koAAAAAAAAAAOgbhCBDVMHoQyVJ5YHN1hYCAAAAAAAAAEAfIQQZokYeNE2SVKoa7a6utLgaAAAAAAAAAAAyjxBkiPLmF2qnUSpJ2vHJGourAQAAAAAAAAAg8whBhrBq74GSpMat71pcCQAAAAAAAAAAmUcIMoT5iw+WJNl2fWRxJQAAAAAAAAAAZB4hyBDmHnGYJKmw4VOLKwEAAAAAAAAAIPMIQYawYQceJUkaHdqsSCRicTUAAAAAAAAAAGQWIcgQNuKAwxQ0Hco1/Nqx5ROrywEAAAAAAAAAIKMIQYYwu9Ol7Y7RkqSqT9dYXA0AAAAAAAAAAJlFCDLE1eQfJEkKbn/X4koAAAAAAAAAAMgsQpAhLloaa47u2fORxZUAAAAAAAAAAJBZhCBDXN7YIyVJZS2fWlwJAAAAAAAAAACZRQgyxI06+BhJ0kizSnW1NRZXAwAAAAAAAABA5hCCDHG+YWWq1jBJ0vZ1qy2uBgAAAAAAAACAzCEEgXZ6J0iSGra8Y3ElAAAAAAAAAABkDiEI1FI8WZJkVH1ocSUAAAAAAAAAAGQOIQjkGjVVklTYsN7iSgAAAAAAAAAAyBxCEKh0wjRJ0pjQZoVDIYurAQAAAAAAAAAgMwhBoBHjD1Wz6ZbXCOrzzz6wuhwAAAAAAAAAADKCEASyORza5hwnSdq1YY21xQAAAAAAAAAAkCGEIJAk1RUcLEkKb3vb4koAAAAAAAAAAMgMQhDEjJouSSqoedfiQgAAAAAAAAAAyAxCEEiShk8+QZI0LvCJIqGgxdUAAAAAAAAAANB7hCCQJI2ZOEV1Zq68RlBb171hdTkAAAAAAAAAAPQaIQgkSXa7XZs8kyVJNR+vtLgaAAAAAAAAAAB6jxAESQ3Dj5Qk2T5/y+JKAAAAAAAAAADoPUIQJHkPmClJKm94z+JKAAAAAAAAAADovR6FIPfcc4/GjRsnj8ejGTNmaPXq1V067vHHH5dhGDrnnHN6cln0sbFTTlDUNFQRrVL97s+tLgcAAAAAAAAAgF7pdgjyxBNPaOHChbr55pv19ttva+rUqZozZ46qq6v3edzmzZt13XXX6YQTTuhxsehbw0tKtcU+WpK06Z1XrC0GAAAAAAAAAIBe6nYIcuedd+qSSy7RggULdMghh+j+++9XTk6Oli5d2ukxkUhE8+bN0y233KIDDjhgv9cIBAKqr69Pe6B/7CqcKklq3LjK4koAAAAAAAAAAOidboUgwWBQa9as0ezZs1tPYLNp9uzZWrWq8380v/XWW1VaWqqLL764S9dZsmSJCgoKko/Ro0d3p0z0gnPsMZKkot00RwcAAAAAAAAADG7dCkF2796tSCSisrKytPGysjJVVlZ2eMxrr72mhx56SL/73e+6fJ1Fixaprq4u+di2bVt3ykQvjJ42V5J0UGi96mr3WFwNAAAAAAAAAAA916PG6F3V0NCg888/X7/73e9UUlLS5ePcbrd8Pl/aA/2jZNREbTcq5DCi2vTmcqvLAQAAAAAAAACgxxzd2bmkpER2u11VVVVp41VVVSovL2+3/8aNG7V582adeeaZybFoNBq7sMOh9evX68ADD+xJ3ehD24tnaNSepxX85CXp1HlWlwMAAAAAAAAAQI90ayaIy+XStGnTtGLFiuRYNBrVihUrNHPmzHb7H3zwwXr//fe1du3a5OOss87SF7/4Ra1du5ZeHwOUY8LJkqSKPTRHBwAAAAAAAAAMXt2aCSJJCxcu1AUXXKDp06frmGOO0V133aWmpiYtWLBAkjR//nyNHDlSS5Yskcfj0WGHHZZ2fGFhoSS1G8fAccDRcxX5j6HR0c9Vs+MzFY84wOqSAAAAAAAAAADotm6HIOeee6527dqlm266SZWVlTriiCO0fPnyZLP0rVu3ymbr01Yj6GPFJaVa5zhIkyPrtfXN51R89tVWlwQAAAAAAAAAQLcZpmmaVhexP/X19SooKFBdXR1N0vvJvx/4nk7c+bDeLThFU//rb1aXAwAAAAAAAABAUldzA6ZsoEO5k2dLksbWvSnFm9kDAAAAAAAAADCYEIKgQ5Omn6JG06NC1avykzetLgcAAAAAAAAAgG4jBEGH8nK8+th9uCSpau1yi6sBAAAAAAAAAKD7CEHQqfoRJ0iS3FtftbgSAAAAAAAAAAC6jxAEnSo78nRJ0vjm9xRsabK4GgAAAAAAAAAAuocQBJ06+LCjVa1iuRXS+jf/1+pyAAAAAAAAAADoFkIQdMput2lL0UxJUvN7z1pcDQAAAAAAAAAA3UMIgn1yHX62JOnA3S/JjIQtrgYAAAAAAAAAgK4jBME+TTr2LNWZuSpRrTauWWF1OQAAAAAAAAAAdBkhCPbJ4/Hqo4ITJEl1a/5qcTUAAAAAAAAAAHQdIQj2y37YVyRJ46pWsCQWAAAAAAAAAGDQIATBfh12QmxJrGHaq03vvGR1OQAAAAAAAAAAdAkhCPYrx5ujD33HS5Jq33zc4moAAAAAAAAAAOgaQhB0iW3quZKkiVX/UiTQZHE1AAAAAAAAAADsHyEIuuTIk87SdpUqX8365OXHrC4HAAAAAAAAAID9IgRBl7idTq2vOEeS5Hz3j9YWAwAAAAAAAABAFxCCoMtGnfwdhU2bJrS8r7ot71tdDgAAAAAAAAAA+0QIgi6bNHGS3nQdI0navuJ+i6sBAAAAAAAAAGDfCEHQLU2HzZMkjdr2rBTyW1wNAAAAAAAAAACdIwRBt0w/5RvaaRarwKzXttf/anU5AAAAAAAAAAB0ihAE3VKY59U7w74sSQq++bDF1QAAAAAAAAAA0DlCEHRb2UnfUdQ0dGDj26rfvs7qcgAAAAAAAAAA6BAhCLrtqClT9JZzmiRp879+bXE1AAAAAAAAAAB0jBAE3WYYhvzTvytJmvD5Mwo11lhcEQAAAAAAAAAA7RGCoEdmnPJVfaKxypFfnyy72+pyAAAAAAAAAABohxAEPeJ2OrTloAWSpIp1S2UGmyyuCAAAAAAAAACAdIQg6LHpX75UW80yFZu1Wv8PeoMAAAAAAAAAAAYWQhD0WJEvVx9MvEySVPHB/Yq21FlcEQAAAAAAAAAArQhB0CvHnXOFNpkjVGA26NNn77C6HAAAAAAAAAAAkghB0CsFeR6tO/hKSdKodQ8p0lRjcUUAAAAAAAAAAMQQgqDXjj/nEn2iMcpVszY8vcTqcgAAAAAAAAAAkEQIggzwed3acOi1kqQxn/5B4foqiysCAAAAAAAAAIAQBBly4pkX6EMdKK/82vj0z6wuBwAAAAAAAAAAQhBkRp7Hqc1T/kuSNO6zvyi0d5vFFQEAAAAAAAAAhjpCEGTMyV86T29rstwKatvj37e6HAAAAAAAAADAEEcIgozxuh2qPO5WRUxDB1Q9r7qPXrS6JAAAAAAAAADAEEYIgoyac8qpWuY5Q5IUfPoaKdhkcUUAAAAAAAAAgKGKEAQZZbcZGv2127TTLNbw4Ofa/tT1VpcEAAAAAAAAABiiCEGQcUccNE4vHnSjJGnUJ39U0/qXLK4IAAAAAAAAADAUEYKgT3z9GxfoGcfpkqTgU5dJDVUWVwQAAAAAAAAAGGoIQdAnvC67Rn7zDm2KlqsoVKXdD54lBRqsLgsAAAAAAAAAMIQQgqDPTD9ojFYd+4B2mT6VNHysqkcvlKJRq8sCAAAAAAAAAAwRhCDoU+fNOUlPHfRLBUynyna8qOp/LLa6JAAAAAAAAADAEEEIgj5lGIYu+dY39GjxNZKk0nd+o4YXf25xVQAAAAAAAACAoYAQBH3OYbfp3EsX6WH3PElS/mu3qemF2yyuCgAAAAAAAACQ7QhB0C8KvE6dcukvdY89FoTkrvy5mp+/VTJNiysDAAAAAAAAAGQrQhD0mzHDcnTG5Xfo/9nnS5JyVv1K/n/eIEUjFlcGAAAAAAAAAMhGhCDoV+NLcvXly5boTtsCSZJnzf1qeew8KdhkcWUAAAAAAAAAgGxDCIJ+d8DwPJ353Z/ox/aFCphOeT97Xi0PnCbV77C6NAAAAAAAAABAFiEEgSUmluXrymt+qOvzbtNu0yfvng8UuG+WtGOt1aUBAAAAAAAAALIEIQgsU1Hg1a1XL9CtZXfrk+hIuVuqFH7odOmjZ6wuDQAAAAAAAACQBQhBYCmfx6lfXnqWlk56QP+OHC5HpEX663xFn7mGPiEAAAAAAAAAgF4hBIHlXA6blnz7eK2eeb/uD39ZUdOQ7Z1HFbr3eGn7GqvLAwAAAAAAAAAMUoQgGBAMw9B1ZxymEd+4Q5foRu00i+Ws/Uzm72dL//tjZoUAAAAAAAAAALqNEAQDyllTR+jmay7XD0ru09ORY2UoKr1+t6L3fEH68O9SNGp1iQAAAAAAAACAQYIQBAPOmGE5eviK07T+uF/r4tB12m6WyFa3VXryQpn3HSu9/5QUjVhdJgAAAAAAAABggDNM0zStLmJ/6uvrVVBQoLq6Ovl8PqvLQT96fcNu3fzUG/py41NaYF8un9Ec21BykHTiD6RDvyrZHdYWCQAAAAAAAADoV13NDQhBMOA1B8O69+WN+utrH+hb0WW62LFMBYkwxDdKmnquNPU8qWSitYUCAAAAAAAAAPoFIQiyTnWDX/e8tEHPrv5Y5+l5fcexTMVGY+sOI6dLR5wXmx2SU2xdoQAAAAAAAACAPkUIgqy1raZZv37hEz23dpNmG2/rq/b/0yz7u7Ir3jTd7pIOmCVNmC0ddLpUNNbSegEAAAAAAAAAmUUIgqy3obpBf1y1Rf/z9ufyBnbrLPvr+rrj/zTZ2NK6k2GTxp8ojT8p9qiYSg8RAAAAAAAAABjkCEEwZDQFwnp67ef646ot+riyQQcZ2zTLtlanu97TUeaH6Tu7C6Rxx8WDkROl4ZMlm82awgEAAAAAAAAAPdKnIcg999yjO+64Q5WVlZo6daruvvtuHXPMMR3u+7e//U233XabNmzYoFAopIkTJ+r73/++zj///Ix/GAxtpmnqrS179ec3tup/P6xUUzCiA4wdOsH2vk7PWa8jox/KE2lIPyinRBp/gjTuBGnkUVLpIZLDbc0HAAAAAAAAAAB0SZ+FIE888YTmz5+v+++/XzNmzNBdd92lJ598UuvXr1dpaWm7/V955RXt3btXBx98sFwul/75z3/q+9//vp577jnNmTMnox8GSPCHInr542o99Nomrdm6V6Yp2RTVIcZmneZdrzk563Vgy/tyRFrSD7Q5pOEHx5bNKp8iVUyRyg+X3PnWfBAAAAAAAAAAQDt9FoLMmDFDRx99tH77299KkqLRqEaPHq2rr75aN9xwQ5fOcdRRR+lLX/qSfvKTn3S4PRAIKBAIJN/X19dr9OjRhCDokV0NAb2yvlovr6/Wvz/ZrcZAWJLkVFjTHBv1zeLP9AXHJypr/kR2/94OzmBIxQfEgpGKKfFwZKqUW9K/HwQAAAAAAAAAIKmPQpBgMKicnBw99dRTOuecc5LjF1xwgWpra/XMM8/s83jTNPXSSy/prLPO0tNPP61TTz21w/0WL16sW265pd04IQh6KxiO6s3NNVqxrlorPq7Slj3NKVtNHV3UrC+VVOtozzaND38m7+4PZDTs6PhkvpHSsAlS4Zj0R8FoyTdCstn75TMBAAAAAAAAwFDTJyHIjh07NHLkSL3++uuaOXNmcvyHP/yhXn31Vb3xxhsdHldXV6eRI0cqEAjIbrfr3nvv1UUXXdTpdZgJgv5gmqY+292kl+KByJub9yoSTf/tUO7z6OTRNp1cVKmp9s0qaVgvo/I9qWbjvk9uc8RCkrRgpELKLZXySqXc4bFnp7cPPyEAAAAAAAAAZKeuhiCO/igmPz9fa9euVWNjo1asWKGFCxfqgAMO0KxZszrc3+12y+2mOTX6lmEYOnB4ng4cnqdLTjxA9f6Q1mzeqzc21Wj1pj16//M6Vdb79ecPpT/LJ2mKinKm6ehxV+m4w136Qm6lxtmr5W7cIdVukWq3SrXbpLrtUjQUH9uy7yJc+bEwJDUYyS2V8obHn8uk/PLYs8PVLz8XAAAAAAAAAMgW3QpBSkpKZLfbVVVVlTZeVVWl8vLyTo+z2WyaMGGCJOmII47QunXrtGTJkk5DEMAKPo9TXzy4VF88uFSS1BKM6J1te7V6U41Wb6rR21v3am9zSP/7UZX+96PYMYZRpHHDRmlyxSmaPMqnyUf7NLk8VyPsdTLqtsWDkfijsUpqrJaadsVeR4JSsEGqadj/zBJJcngljy/WpN3tS3ldkD7uzo+/96XsFx935UqG0Yc/RQAAAAAAAAAYOLoVgrhcLk2bNk0rVqxI9gSJRqNasWKFrrrqqi6fJxqNpi13BQxEXpddxx5YomMPjDVAD4aj+mBHXTIUef/zOu1qCGjT7iZt2t2kZe9XJo8t8Dp1cHm+JlccqkMqZmryAT5NLMuTxxnvE2Kakr8uHohUS03VUuOu+HN163hjldRQGZtZEm6RGltiYz1l2NuEKG1Dk30EKKnj9n6ZRAYAAAAAAAAAvdLtf8lcuHChLrjgAk2fPl3HHHOM7rrrLjU1NWnBggWSpPnz52vkyJFasmSJJGnJkiWaPn26DjzwQAUCAS1btkx//OMfdd9992X2kwB9zOWw6agxRTpqTJEuO+lASdKuhoDW7azXup31+riyQet21mtDdaPqWkJ6Y1ON3thUkzzebjM0qsirccNyNb4kV+OG5WhcSYHGl4zQyNFeOey2ji8cjUr+WilQL/nrpUBDyuv6TsY72MeMSmYkdi5/rVTXix+GwxubVeLOk1yJR258LL/1deo2p1dyuCWHJ/5wS3ZX7JH22iXZE+8JWwAAAAAAAAD0XLf/hfHcc8/Vrl27dNNNN6myslJHHHGEli9frrKyMknS1q1bZbO1/mNuU1OTrrjiCm3fvl1er1cHH3ywHnvsMZ177rmZ+xSARYbnuzU8f7hOPGh4ciwQjmhDdaPW7WxIBiTrdtZrb3NIW/Y0a8ueZr36ya608zhshsYU52jssByNHZYbf469HlXklTunWMop7nmhpikFm7oRoNR1PB5uiZ0v3BJ7NO/ueU1dYdhaA5FkOOLsWoDSpf3j2+3uNq/j2+3uWBBjc0g2Z2y7zZ7y2hF7DwAAAAAAAGBAMkzTNK0uYn+62uUdGKhM01R1Q0Cf7WrSlj1N2rSnSZt3N2nz7mZt3tOkQDja6bGGIY0o8KYFJOOG5WhMcex1rrsfZ0uEg7EwJNgQD1UapWBj7HXqc9p4/BFukcIBKeyXQn4pEoidLxKQIqHYtshgXCbPSAlEnG1CE0dr4JIIWOzONgGMq83D2cXX8fc2e/x68Ydhbz9m62DMsLXZxyHZOpmNBAAAAAAAAAwwXc0NCEEAi0Wjpirr/bFQZE+zttQ0acvuZm2padaWPU1qDkb2eXxxrkujirwaWejVqCKvRhXlaGShVyOLvBpR6FWB19lPnyQDTFOKhuOBSDD2CMdDkkigzev49k5fB9PPEwmmhC7BjgOY5OuU46Ph2CMSii0nlu3ahieGPRaYGLb4e1v7R2fj7bbZY6lej7bZWrd3e5stFvCk1dbVbW3q6ta2RF1tfj5d/nl15WdpWH3HAAAAAAAAWIIQBMgCpmlqd2NQW/bEApKtexJBSSwgqW0O7fcc+W6HRhR6NaLQkwxGRhZ6Ve7zqKLAq1Kfu7VhO/YtEdJEQrFm9dFIyuuwFAmnvE48p4YxofRQJu19qM1+icAnvk805XXqcdFI/BFufZjR9Pdt9xkKYc6QsZ9gqF2o0sE2Ga1hTuJ14ryG9rPd6GS72mzf176JsX1t7+x4dfH8bbdbdK2Otrd7jl9H2sd7pbxvc1y710b6vp29TjtOXT9Hr67d2XGZuLY6Py4T9be7Rnc+dzevTdgJAAAAAB0iBAGGgLqWkD7f26LPa1u0fW+ztu9t0ed7W7S9tlk7av2qaQp26TzFua54KOJReUHsuaLAq4rC+HOBh6Akm5hmLBQxI22CknAngUok9mzGn6PR+PuUscQjGomdv9Nt0fj2zrZ18BjQ21I+7762tdu+n20A0KFMh17dvXaba3UWaqYGfu3e29Lf93jf+BKOne3bLuRV67PM2HewFH9u87qjsX39XNoNdfTz7ep+fXXOTJ6vC/sl/xNzf/+p2Q+fdV/n2O8hnfx+S92Wes919ujJtXsi20LTzr5rOvqZdvbZ0/65w+zGeGf77k839u2r8ya1/W7uaGyghu2d/RkW32ak7Lev36dpx3VyzD6v08nv+95K+/NGSvuzZ1/3RV9/d3drv44OtbK+Tu7tTv886mB/y+zj7yRtX3d6iv19R+xje2+O7c7xXfl+3ec+XTlP2332cVyX9unC5+jKeXryOTp8LemIeVLZIUKrruYG/dhMAECmFXidKvA6dciIjn+TtwQj+ry2RTtqW9KeP9/boqp6v3bW+RUIR1XTFFRNU1Af7azv9FrFuS6V5rtV6vPEnhOP5HsPs0oGC8OI9SuRQ5Lb6mrQkX2GJ9HW7R1ui2/vMJRJnLNNGJP4i5UZbX2tRA1Keb2/fVO3d2ff1O1qs70r11XH27tTY7vtnV23Cz+Pdtfdz88j8WsutXnf2Wt1YZ82r/f7F+q29XRQS7fP0dnrrpyji+dL21c9O0dXPuOAkVqXBlZpAAAAAPrW2GMJQXqIEATIYl6XXRNK8zShNK/D7aZpqq4lpJ11flXW+ePPLdpR59fOuhbtrPNrZ61fLaFIMij5uLJhn9fM9zjSQpHheW6V5Ls1LNelkny3SnLdKsl3qTjXJbeDwATokGFIhl2SXbIPor4+QLYzuxvM9CTcUfp4xsOiHiYn7ULDxHO0422pwWHydbTNtg6Cx3bvOzs28Vpd39eM7vv/hpb2Pdb+h9LJz6mn+/XFOfuixq6erxv/53S7c5jd294X9vv7tO39Gk2/11Jnv/aHnv7e7v6F+uk6SvmOUPvf42n7dXR/7GcmQLe3deP/Eu+rmRXdOa/Z2b3b0fe4maGaM/W5u/L7rqPXbY5PO06dHNPN12l19eLz7mvmQmezc7ry3d3j7/ce/lnR4306OqwXNXX6951O/izqbH9LZ0V1Nitpf38XST3F/urfx/beHNul49vu19F3bQezsTKyzz6OSyu7s326cp4u7NPtz9Fme+J18QFCzxCCAEOYYRgqzHGpMMelyRUdzyZJBCU7av2qbvCruiGgXQ0BVdfHXsceflXXBxQIR9XgD6vBH9bGXU37vb7P41BJnlsleW4Ny3NpWJ5LxbmxwKQ416VhuS4V5DiTM17y3A4ZA3K6NgBgSKBHBwAAAAAMOoQgAPYpNSg5RJ2vrWeapur9Ye2KByKJcGR3Y1C7GwLa3RR/bgxoT1NQkWhs/3p/WJ/t3n9gIkl2myGfx5EMRXze1oCkMMepohyXCryx56JcpwpzXMkxu41/tAIAAAAAAACGGkIQABlhGEYykJhQmr/PfaPR2OySPU0B7WoIak9TQLsbYuHInqagahpjS2/taQqoriWs+paQgpGoIlFTe5tD2tsc6nZ9Po9DRbmueDDSWWCSMp7rUq7LzswTAAAAAAAAYBAjBAHQ72w2Q0W5LhXlujShdP/7m6YpfyiqupZQu0d9yuu9zUHtbQ6ptjmovc1B1TaH1OAPS1Jy1smWPc1drtNpN5LhSKHXlZxtUpgbD09ynCrwxsOT3Nj2Qq9LLoetpz8aAAAAAAAAABlECAJgwDMMQ16XXV6XXeUFnm4dG4rEwpPaeECytymo2pT3tc1B7W2KBSipQUowHFUoYmpXvAdKd+S67LHwJB6WtAYpzvjSYvEZJ4lQJb60F0t2AQAAAAAAAJlFCAIgqznttmTz9a4yTVMtoUgyNEmbZdIUf26JzTRJzDhJhCimKTUFI2oKtujz2pYuX9MwpHy3Q4Xx5bgKvM5kU/jClN4n7fqh5DiVT8N4AAAAAAAAoEOEIADQhmEYynE5lONyaGSht8vHRaKmGvyheN+SYIezTGqbQ7FHS2xbXUtIjYGwTLN1ya7ushlKaxLftmm8z5MYcyTfJ7bnexxy2lm+CwAAAAAAANmJEAQAMsRuM+LLXbk0XrldPi4YTu13Eky+rm1Of27bA6WuJaRAOKqoqWS40hO5Lrt8bcKS9PdO+TytY/me1jAlz+NgGS8AAAAAAAAMWIQgAGAxl8Om4fluDc/v+pJdCf5QpF0w0r55fFj1/tYQpb4lpHp/WI2B2KyT2PJdEe2s8/eo/jy3IxmS5HscyZkmPo9D+Z54qOJxpr1O3ZdG8gAAAAAAAOgrhCAAMIh5nHZ5nHaV+rrXMF6SwpGoGvzhWDjibw1M0t/Hn/1hNfhbA5QGf0j+UFSS1BiIBSo7ehiieJw25XtivU1y3Q7lJZ/tyvM4lOeOBSZ58W35HofyPA7lJ8Y9sTG3w96j6wMAAAAAACB7EYIAwBDlsNtUlOtSUa6rR8cHwhE1+MNq8Ifj4Uiok9eJACWcNt4Qn4niD0XlDwW0qyHQq8/jsttaZ53EZ6IklvPKjwcoeSlhSl58pkp+PETxeZxyO2w0mQcAAAAAAMgihCAAgB5xO+xy59lVktf9ZbykWCP5xkBraNIUiKgxEFJjIKJGf7iD1+Fk6BJ7HVKjP6ymYESSFIxEtbsxqN2NwR5/JqfdSAtGErNNEmM+T9vwJL1fis/LjBQAAAAAAICBhBAEAGAJu81QgTfWfL03EmFKQ5vZJ4lwpb4lPURpDITV6E8EKrEZKY2BsExTCkVM1TQFVdPU8yDF7bC163/StrF8Yiy2vJczucwXzeYBAAAAAAAyixAEADCoZSJMiUZNNQVbZ5okA5X4c+pYInCp72ApMEkKhKMKNAa0u7Hny3t11my+9XViFkpq4/nW/ZmNAgAAAAAAEEMIAgAY8my2xDJYPQ9SUmekJPqf1Le0himpY/X+lJkp/rAaApltNu9y2GIBiceR7I/ia9P/pDU0ie+XOuZ2yMZsFAAAAAAAkAUIQQAAyIC0GSlFPTtHMBxNmWWS2ky+fWP5en/rsl9tm80Hw1Ht7uVslPzEEl3e9P4n+W1moiSDlbSwxSmPkybzAAAAAADAeoQgAAAMEC6HTcPy3BrWy2bzqf1R0pf1ah+w1PvT9w+EY7NRGgKxGSo9nY2S2mTe1/a5k2DF1yZYcdhtPbo2AAAAAABAAiEIAABZIhP9UQLhSLIPSiJEiYUnbRrPpwYrLWE1BOLP/pCiGWoyn+Oyd7h8V9ux9OW+Wmeq5LrszEYBAAAAAGCIIwQBAABJbodd7jy7Sno4G8U0TTUFIx3ORkmdhZI+K6W1AX29P6TmYESS1ByMqDkYUVV9z5b1shlqDUXc6bNQEj1T8jwOeV0O5TjtyvM4lO+OjeXFn/PdLO0FAAAAAMBgRggCAAAyxjCMWIDgdqiioGfnCEeiaaFIfSfLeyXDk0D7YCUUMRU1pbqWkOpaQpJaevyZ7LbWz5TXLiRJH8v3OJTndirXbU++Tu7vdshOw3kAAAAAAPoVIQgAABhQHHabinJdKsp19eh40zQVCEfbLd3V0fJejf6wmoMRNQXDagqE1RiIjTXEX5tmrNdKa5jSOzkuu3LdrTNOcl2OtJAk9XWuuzVYyW0TwuQ47bIRqAAAAAAAsF+EIAAAIKsYhiGP0y6P065SX8/PY5qmWkKR1lDEH443nk+EJaHY+5RtbfdNNKoPRUxJrUt87Wro2RJfrZ9RsQDF7VCu2648j1P5iddup/LcseW9uhK4eJ30TgEAAAAAZC9CEAAAgA4YhqEcl0M5LodKe3muQDgWpjQFIqr3h1pnncQfTSkBSuu2iBr9ITUFIskwpSkYUSRqyjSVPLa3bIbSw5LUWSfxGSn5nvTXnQUqbgf9UwAAAAAAAwshCAAAQB9LNJwflte785imKX8o2hqg+NODlMQslLSQxd9x4NIYjC33FTWV7MGiut7V57AZyVknact4eRzKcznSZqfkpvRVabvcV57bIZfD1rtiAAAAAAAQIQgAAMCgYRiGvC67vC67hue7e3WuaDS+3FdKWJIWpARjwUhTFwKXpmBEkhSOmqptDqm2uff9U1x2W9psk3xP4uFMzkxJvE7d1rqvk2b0AAAAAABCEAAAgKHIZjOUG5+FUdbLc0WippqDKQGJP/11IkhpSJ2JEoioMRCK7xdJ7tcSigUqwUhUNU1B1TQFe1VbrsseC0Q8rct6+ToIUvI8Dvk6CFLyPSzzBQAAAACDGSEIAAAAesVuM+KBgbPX5wpHorE+KMFEWBJKLteV6I3S6A+rPjkWStkW297gDysQjkqSmoKR2EyV+p7X5LQbbcIRh/LcznhoEl/WKyVY8aWELonjmJUCAAAAANYgBAEAAMCA4bDbVJBjU0FO7wKVYDgaC0zi4Uh9PDxJDUoaA4kwJZQWoiT2S/RNCUXMjM1KyWs7A8XdGqokZqMkeqO0D15i/VZshCkAAAAA0GWEIAAAAMg6LodNw/LcGpbX894p0aiZ7I2SmHWSnIHSLkwJtY6nzl7xhxWMpM9KqVKgV58tMbMk121Xnsep/DZN5ZOBScrrZLASD1ty3Xa5HfZe1QEAAAAAgwEhCAAAANABW4aW+QqEI62zS1JnnARS36cs7eWP9U9JjCWODUdNSUoe11upzedTZ6XkuGIBSq7LHu8bE3tOLPXl88ZmqSR6q+S47PRMAQAAADBgEYIAAAAAfcjtsMudZ+/VrBTTNBUIR2MBSEqYEgtEQrFG86mhSXy/pmA47X1jIKzmYGabz8d6wrQ2nE8+e9u/93naLgVG83kAAAAAfYsQBAAAABjgDMOQx2mXx2lXSS/CFEmKxJf5amwzAyURqjQFwmoKRNQcbA1NEuFLQyCk+pbYTJZ6f1iRqKlI1FRtc0i1zaEe1+S0G8lQJLUPSrKxvCc2MyU2SyX9Oa/NcmAEKgAAAABSEYIAAAAAQ4jdZsSWterlMl+maaolFEkLRRK9UepbQsmG9A3+1uCkbZP61Obze5tD2tuLICXBYTOSgUgiUMl1py/7led2xnqqxHun5Lrtyk0sA5bot+J2yOtkqS8AAABgsCMEAQAAANBthmEoxxXrIVJe4OnRORLN51N7oyT6paQ2oG+Mz0xpCkbUEkyfqdIUiKgp0BqohDMwM6X1MyoejrT2RUmEJXkpY4kwJa9NiNJ2zGVnlgoAAADQ3whBAAAAAFgitfl8RUHvzhWNmmoOtfZGafDHApJkw/mUviiJkCUtSAm2LgXWFA9UTDO1EX2g15/XYTNSgpHWECXHZU8LTDoeizeqd7WGKm6Hvdc1AQAAANmOEAQAAADAoGezGclZGVLPZqYkRKOm/OFI+kyTeL+UjsZis1najAVax1pCsWb04aipupaQ6lp6P0tFivVSaQ1GOp6tkpMcs7ebmZI4NjHmctgyUhcAAAAwkBCCAAAAAEAKm611qS/l9/58iWb0TSkBSjIwSQlQmlOCk8Zga5iSOlOlMRCWPxSVFOulkqmlvyTJZbcpJ94fpf1slZTZKKlhiqvtWOz4HJb/AgAAwABBCAIAAAAAfShTzegTwpGomoLx4KSTWSiJ7Y0pQUpjm22J7YFwLFQJRqIKNkczFqo4bEZyWa8clz0ZpuS67cnnWGASC1NyUkOVeJCS60o5lmAFAAAAPUAIAgAAAACDiMNuU4HXpgJvZkKVUCSq5jazTdJDk86XAGtOmdGS2CcRqoSjpur9YdX7wxmpU2ofrOS4WvuneF125bkcyvM4lO9xxPvNOORLeZ3vcSbfs/wXAADA0EAIAgAAAABDmNNuU0GOTQU5mZup0hyKpAUrTYGImoOxWSiJ4KQ5GNueul9zcoZLpM+DFZfDlmxCn9qMPjELJTlzJbnklz2+LFj8GI9D+W6n8jw0qgcAABjICEEAAAAAABnjsNvks9sytvyXlB6sNAbCakkEKPGgpCXYGqQ0xEOSBn9IDfHnxvh4gz8WwEhSMBxVTTiomqbM1Oiy25Tnae2Xku9xKD/+HBtPzEaJj8Xf57lbZ67k0aAeAAAg4whBAAAAAAADWiaDlUjUjIcioeTMk0Tz+eaUZb5S+64kG9oHY7NUGuNhSmJGixTrqVLTFFRNU7BX9bkdtrRQJC8lSMl3x3qo5KX0UcnrpOdKjssur9Mum40eKgAAYGgjBAEAAAAADBl2m6ECrzNjPVUiUTPWIyUlGGnwJ96H0magtJ2Vknjf6I+FLpIUCEcVaAxqd2PvwpQEr9OeFox01Esl12WX19UarOTEj0mOJY5NnIdwBQAADCKEIAAAAAAA9JDdZsjncfZ6lkrqDJXUIKUh0Lq0V3LWSiCsxkQflUQT+2Br75XE7BRJaglF1BKKSMpMqJLgddpbgxFnrI9KrquTUKWTsUQgkxjzOu2yE64AAIAMIwQBAAAAAMBimZyhEo2a8ocjag62NqhvDrYGJG17qbSkNKlvThtLOSYQVnMoItOMXSMRruzJUE+VBI/T1jpTJRGquO3yOhNLfbUGJ9748l+x2S6OtFkuiZkuiTHCFQAAhi5CEAAAAAAAsojNZsTDAIeUl7nzmqYpfyiaDEaS4UrKDJRkgBKIqDkUToYwiVClpc2MlUQoE42HK/5QVP5Q5hrWJ7gdttYAJW2pr5QxZ2JbLIBJhipue3yJsPZjDjuN7AEAGOgIQQAAAAAAwH4ZhiGvKxYSDMvgeU3TVCAcjTeij6TNWmkKhNUSiqQFJ6lBS0uo41AlEb4kwpVAOKpAOKq9zaEMVi65HLb0vikdBC3JUCUenLQuEdYmVEk5j5NwBQCAjCEEAQAAAAAAljEMQx6nXR5n34Qr7UKVtkt9xZf7Ss5UCUbSlwgLpS8V1hyMKBJPV4LhqIJ9Ea7Ybe1Ck0RI4nXFlgDzOmMBiyfx2mmLvU4JWLzxZcGSPVxcDrkdNhrbAwCGFEIQAAAAAACQdVLDleJcV8bOa5qmgpFoPCBpDVCak6FJJ6FKIKUnS9ugJR6uhBPhSiSqYHNUtcpsuJLgcdqSQUriZ5QIV1pf25IBS+r2RPgS69HiSM5yyWWZMADAAEUIAgAAAAAA0EWGYcjtsMvtsKsow+cOhqMpIUliqa9I2lhLMKKWUFQtoYj8oUj8fevr5mBrENMc39YUCCsQjiavE+u9EtXePgpZ2i0T5nbE+6qkLh3WeQ+W3DYN7r0uwhUAQM8RggAAAAAAAAwALodNLodLhTmZP3ckaqaFJf5QIjyJBSqpY4lgJZB4H4qoJRhNbk9dXizx3NQPy4QlGtx7nXa5nfbk+9zUPivxEMXbyfvkLBZnPFyJn48lwgAgexGCAAAAAAAAZDm7zVCe26E8d9/8U1CiB0tLsOvLhDUHWvuyNAXDaf1bEs3tU3uwJBvc98EMFo/TFuu5kuyfYo+HJK0zUbyJMWf7WSy5bkdy+bDEsYn3TrshwyBkAQCrEIIAAAAAAACgV1J7sGRymbCOerD4Q1H5w7GZK8nlwgJtnoNtgph4sJLa6L4lFEleJ7ZEWDCDlbey2wzlOO3ypPRV8aQGK8m+K7EgJrXZfSx4caT0Y7GlhC2O+LlsctltBC0A0AlCEAAAAAAAAAxIfdmDJRo15Q/HA5Fga6CS2lulJdg6W6U1dEkJVlKWBvOHoin7hRWfwKJI1FRDIKyGQDjDn6CVzVA8JHHI60pvfN92ZkpitkpqKJPYnpMWyqTsG19+jKAFwGBECAIAAAAAAIAhx2Yz4o3aM//PY6ZpKhQx03qstGtiH4rIH0ztu9LmOb69OfW4xPb48YmlwqKm1BSMqCkY2U9lPWckghanvbWfiivW9L51+TB7MoxJX1bMLq+z7Zij9TWN7wH0IUIQAAAAAAAAIIMMw5DLYcjlsKnA6+yz64Qi0XZhSUubcCUxO6WlbeDSJlxJzIjxtwllQpFY0GKaSs6EUVPmP4vLbksJV+K9WVIb2CfG4kuG5aSELmmBSpuAxutiFgsw1BGCAAAAAAAAAIOQ026T026Tz9O3QYs/Ga5EY31V2iwhlrpUWEsykAm3GQsng5rUscSyYcFIVMGWqOpaMt/43maotcl9yjJfqWOJ2Spel00ehz3e48YmtzN9KbH0oKW1N4vdRsgCDFQ9CkHuuece3XHHHaqsrNTUqVN1991365hjjulw39/97nf6wx/+oA8++ECSNG3aNN12222d7g8AAAAAAABgYEgELfl9ELSYpqlAOJpc3iu1B0tan5ZQariSEqik7htqPxaMRCXFlgtrDITV2Id9WdwOW7tgpaOwxRuf4dLhzJVOjnGyVBjQK90OQZ544gktXLhQ999/v2bMmKG77rpLc+bM0fr161VaWtpu/1deeUXnnXeejj32WHk8Hv385z/Xaaedpg8//FAjR47MyIcAAAAAAAAAMLgYhhGfcZH5xveSFI5E4+FKB43vU2arpAYsiSXBYo+o/OHW14mwJXV/Mz6TJRCOKhCOam9z5meyOO1Gu2W/0melOJK9VdIClTazXDrqycJSYRgKDNNM/FbtmhkzZujoo4/Wb3/7W0lSNBrV6NGjdfXVV+uGG27Y7/GRSERFRUX67W9/q/nz53e4TyAQUCAQSL6vr6/X6NGjVVdXJ5/P151yAQAAAAAAACDjTNOUPxRtt9RXatiSXAosLYxpnfXSEupgrE3j+75kSzS830cz+0TgkghavC57si+L12mXJ2U8x5WyfJjLLo/DLhtLhaGP1NfXq6CgYL+5QbdmggSDQa1Zs0aLFi1KjtlsNs2ePVurVq3q0jmam5sVCoVUXFzc6T5LlizRLbfc0p3SAAAAAAAAAKDfGIaRDAeGZfjcpmkqGIkmG9S3WyIs8TrUJjzZR0+WRLjSHIwoGG5dKqwpGFFTMJLhT9DK5bAle6p4nLZYSBIPSBKzWtzO1H1agxZPm/HWba3j7vizy8GyYehYt0KQ3bt3KxKJqKysLG28rKxMH3/8cZfOcf3112vEiBGaPXt2p/ssWrRICxcuTL5PzAQBAAAAAAAAgGxnGIbcDrvcDrsK++D84Ug0rddKx8FJa+P72L5RtbRZDswfSnmdDGUiCsRDFkkKhqMKhvum6X2qxLJhue7YDJbEc+pyYYnQKrXRfTJcSY7Z2s1m8bJ02KDWo8boPXX77bfr8ccf1yuvvCKPx9Ppfm63W263ux8rAwAAAAAAAIChwWG3Kb+PGt5LUiRqKhCOJGey+EPRZJjiD7WOB0LxMCYxHg9T/PHx1GMSY7GQpfUciVXDQhFToUhY9f5wn3wmw1Da7JXkrJaUMCU1XEmd3dJ2u6eDsCUxTtiSed0KQUpKSmS321VVVZU2XlVVpfLy8n0e+8tf/lK33367XnzxRU2ZMqX7lQIAAAAAAAAABjy7zYg3X+/b/wffNE2FImayaX1TIDZ7pSkQm9nSGEjvv5KYxdI2kGkburSkzHQJRcz4tZQMbPpS27DF7bTJZbfpxi8fouMmlPTptbNVt+5Cl8uladOmacWKFTrnnHMkxRqjr1ixQldddVWnx/3iF7/Qz372Mz3//POaPn16rwoGAAAAAAAAAMAwDLkchlwOmwrUN7NawpGo/OFoPCxpDUn8bWawxJYLS8xaaQ1S2s5+SZ0V052wpbkP+7Zku25HcQsXLtQFF1yg6dOn65hjjtFdd92lpqYmLViwQJI0f/58jRw5UkuWLJEk/fznP9dNN92kP//5zxo3bpwqKyslSXl5ecrLy8vgRwEAAAAAAAAAIHMcdpvy7Dbluft2VktnYUtLKKJQJKpDKnx9ev1s1u1fuXPPPVe7du3STTfdpMrKSh1xxBFavnx5sln61q1bZbPZkvvfd999CgaD+vrXv552nptvvlmLFy/uXfUAAAAAAAAAAAxy/RW2DEWGaZqm1UXsT319vQoKClRXVyefj8QLAAAAAAAAAIChrKu5ga3TLQAAAAAAAAAAAIMYIQgAAAAAAAAAAMhKhCAAAAAAAAAAACArEYIAAAAAAAAAAICsRAgCAAAAAAAAAACyEiEIAAAAAAAAAADISoQgAAAAAAAAAAAgKxGCAAAAAAAAAACArEQIAgAAAAAAAAAAshIhCAAAAAAAAAAAyEqEIAAAAAAAAAAAICsRggAAAAAAAAAAgKxECAIAAAAAAAAAALKSw+oCusI0TUlSfX29xZUAAAAAAAAAAACrJfKCRH7QmUERgjQ0NEiSRo8ebXElAAAAAAAAAABgoGhoaFBBQUGn2w1zfzHJABCNRrVjxw7l5+fLMAyryxkw6uvrNXr0aG3btk0+n8/qcoCM4x7HUMB9jmzHPY5sxz2ObMc9jmzHPY6hgPsc2co0TTU0NGjEiBGy2Trv/DEoZoLYbDaNGjXK6jIGLJ/PxxcYshr3OIYC7nNkO+5xZDvucWQ77nFkO+5xDAXc58hG+5oBkkBjdAAAAAAAAAAAkJUIQQAAAAAAAAAAQFYiBBnE3G63br75ZrndbqtLAfoE9ziGAu5zZDvucWQ77nFkO+5xZDvucQwF3OcY6gZFY3QAAAAAAAAAAIDuYiYIAAAAAAAAAADISoQgAAAAAAAAAAAgKxGCAAAAAAAAAACArEQIAgAAAAAAAAAAshIhyCB2zz33aNy4cfJ4PJoxY4ZWr15tdUnAfi1ZskRHH3208vPzVVpaqnPOOUfr169P22fWrFkyDCPtcdlll6Xts3XrVn3pS19STk6OSktL9YMf/EDhcLg/PwrQqcWLF7e7hw8++ODkdr/fryuvvFLDhg1TXl6evva1r6mqqirtHNzjGMjGjRvX7h43DENXXnmlJL7HMfj8+9//1plnnqkRI0bIMAw9/fTTadtN09RNN92kiooKeb1ezZ49W59++mnaPjU1NZo3b558Pp8KCwt18cUXq7GxMW2f9957TyeccII8Ho9Gjx6tX/ziF3390QBJ+77HQ6GQrr/+eh1++OHKzc3ViBEjNH/+fO3YsSPtHB19999+++1p+3CPwyr7+x6/8MIL292/p59+eto+fI9joNvffd7R388Nw9Add9yR3IfvcgxVhCCD1BNPPKGFCxfq5ptv1ttvv62pU6dqzpw5qq6utro0YJ9effVVXXnllfrPf/6jF154QaFQSKeddpqamprS9rvkkku0c+fO5CP1D91IJKIvfelLCgaDev311/Xoo4/qkUce0U033dTfHwfo1KGHHpp2D7/22mvJbf/1X/+lf/zjH3ryySf16quvaseOHfrqV7+a3M49joHuzTffTLu/X3jhBUnSN77xjeQ+fI9jMGlqatLUqVN1zz33dLj9F7/4hf7f//t/uv/++/XGG28oNzdXc+bMkd/vT+4zb948ffjhh3rhhRf0z3/+U//+97916aWXJrfX19frtNNO09ixY7VmzRrdcccdWrx4sR588ME+/3zAvu7x5uZmvf3227rxxhv19ttv629/+5vWr1+vs846q92+t956a9p3+9VXX53cxj0OK+3ve1ySTj/99LT79y9/+Uvadr7HMdDt7z5Pvb937typpUuXyjAMfe1rX0vbj+9yDEkmBqVjjjnGvPLKK5PvI5GIOWLECHPJkiUWVgV0X3V1tSnJfPXVV5NjJ510knnttdd2esyyZctMm81mVlZWJsfuu+8+0+fzmYFAoC/LBbrk5ptvNqdOndrhttraWtPpdJpPPvlkcmzdunWmJHPVqlWmaXKPY/C59tprzQMPPNCMRqOmafI9jsFNkvn3v/89+T4ajZrl5eXmHXfckRyrra013W63+Ze//MU0TdP86KOPTEnmm2++mdznX//6l2kYhvn555+bpmma9957r1lUVJR2j19//fXmpEmT+vgTAena3uMdWb16tSnJ3LJlS3Js7Nix5q9//etOj+Eex0DR0T1+wQUXmGeffXanx/A9jsGmK9/lZ599tnnyySenjfFdjqGKmSCDUDAY1Jo1azR79uzkmM1m0+zZs7Vq1SoLKwO6r66uTpJUXFycNv6nP/1JJSUlOuyww7Ro0SI1Nzcnt61atUqHH364ysrKkmNz5sxRfX29Pvzww/4pHNiPTz/9VCNGjNABBxygefPmaevWrZKkNWvWKBQKpX2HH3zwwRozZkzyO5x7HINJMBjUY489posuukiGYSTH+R5Htti0aZMqKyvTvrcLCgo0Y8aMtO/twsJCTZ8+PbnP7NmzZbPZ9MYbbyT3OfHEE+VyuZL7zJkzR+vXr9fevXv76dMAXVNXVyfDMFRYWJg2fvvtt2vYsGE68sgjdccdd6QtY8g9joHulVdeUWlpqSZNmqTLL79ce/bsSW7jexzZpqqqSs8995wuvvjidtv4LsdQ5LC6AHTf7t27FYlE0v7hQJLKysr08ccfW1QV0H3RaFTf+973dNxxx+mwww5Ljn/729/W2LFjNWLECL333nu6/vrrtX79ev3tb3+TJFVWVnZ4/ye2AVabMWOGHnnkEU2aNEk7d+7ULbfcohNOOEEffPCBKisr5XK52v2jQllZWfL+5R7HYPL000+rtrZWF154YXKM73Fkk8Q92dE9m/q9XVpamrbd4XCouLg4bZ/x48e3O0diW1FRUZ/UD3SX3+/X9ddfr/POO08+ny85fs011+ioo45ScXGxXn/9dS1atEg7d+7UnXfeKYl7HAPb6aefrq9+9asaP368Nm7cqB/96EeaO3euVq1aJbvdzvc4ss6jjz6q/Pz8tGWXJb7LMXQRggCwzJVXXqkPPvggrVeCpLR1Vw8//HBVVFTolFNO0caNG3XggQf2d5lAt82dOzf5esqUKZoxY4bGjh2rv/71r/J6vRZWBmTeQw89pLlz52rEiBHJMb7HAWBwCoVC+uY3vynTNHXfffelbVu4cGHy9ZQpU+RyufTd735XS5Yskdvt7u9SgW751re+lXx9+OGHa8qUKTrwwAP1yiuv6JRTTrGwMqBvLF26VPPmzZPH40kb57scQxXLYQ1CJSUlstvtqqqqShuvqqpSeXm5RVUB3XPVVVfpn//8p15++WWNGjVqn/vOmDFDkrRhwwZJUnl5eYf3f2IbMNAUFhbqoIMO0oYNG1ReXq5gMKja2tq0fVK/w7nHMVhs2bJFL774or7zne/scz++xzGYJe7Jff3du7y8XNXV1Wnbw+Gwampq+G7HoJEIQLZs2aIXXnghbRZIR2bMmKFwOKzNmzdL4h7H4HLAAQeopKQk7e8mfI8jW/zf//2f1q9fv9+/o0t8l2PoIAQZhFwul6ZNm6YVK1Ykx6LRqFasWKGZM2daWBmwf6Zp6qqrrtLf//53vfTSS+2mWXZk7dq1kqSKigpJ0syZM/X++++n/SU18R9qhxxySJ/UDfRGY2OjNm7cqIqKCk2bNk1OpzPtO3z9+vXaunVr8jucexyDxcMPP6zS0lJ96Utf2ud+fI9jMBs/frzKy8vTvrfr6+v1xhtvpH1v19bWas2aNcl9XnrpJUWj0WQIOHPmTP373/9WKBRK7vPCCy9o0qRJLC0ByyUCkE8//VQvvviihg0btt9j1q5dK5vNllxCiHscg8n27du1Z8+etL+b8D2ObPHQQw9p2rRpmjp16n735bscQ4bVndnRM48//rjpdrvNRx55xPzoo4/MSy+91CwsLDQrKyutLg3Yp8svv9wsKCgwX3nlFXPnzp3JR3Nzs2maprlhwwbz1ltvNd966y1z06ZN5jPPPGMecMAB5oknnpg8RzgcNg877DDztNNOM9euXWsuX77cHD58uLlo0SKrPhaQ5vvf/775yiuvmJs2bTJXrlxpzp492ywpKTGrq6tN0zTNyy67zBwzZoz50ksvmW+99ZY5c+ZMc+bMmcnjuccxGEQiEXPMmDHm9ddfnzbO9zgGo4aGBvOdd94x33nnHVOSeeedd5rvvPOOuWXLFtM0TfP22283CwsLzWeeecZ87733zLPPPtscP3682dLSkjzH6aefbh555JHmG2+8Yb722mvmxIkTzfPOOy+5vba21iwrKzPPP/9884MPPjAff/xxMycnx3zggQf6/fNi6NnXPR4MBs2zzjrLHDVqlLl27dq0v6MHAgHTNE3z9ddfN3/961+ba9euNTdu3Gg+9thj5vDhw8358+cnr8E9Divt6x5vaGgwr7vuOnPVqlXmpk2bzBdffNE86qijzIkTJ5p+vz95Dr7HMdDt7+8rpmmadXV1Zk5Ojnnfffe1O57vcgxlhCCD2N13322OGTPGdLlc5jHHHGP+5z//sbokYL8kdfh4+OGHTdM0za1bt5onnniiWVxcbLrdbnPChAnmD37wA7Ouri7tPJs3bzbnzp1rer1es6SkxPz+979vhkIhCz4R0N65555rVlRUmC6Xyxw5cqR57rnnmhs2bEhub2lpMa+44gqzqKjIzMnJMb/yla+YO3fuTDsH9zgGuueff96UZK5fvz5tnO9xDEYvv/xyh38/ueCCC0zTNM1oNGreeOONZllZmel2u81TTjml3b2/Z88e87zzzjPz8vJMn89nLliwwGxoaEjb59133zWPP/540+12myNHjjRvv/32/vqIGOL2dY9v2rSp07+jv/zyy6ZpmuaaNWvMGTNmmAUFBabH4zEnT55s3nbbbWn/gGya3OOwzr7u8ebmZvO0004zhw8fbjqdTnPs2LHmJZdc0u5/IuV7HAPd/v6+Ypqm+cADD5her9esra1tdzzf5RjKDNM0zT6dagIAAAAAAAAAAGABeoIAAAAAAAAAAICsRAgCAAAAAAAAAACyEiEIAAAAAAAAAADISoQgAAAAAAAAAAAgKxGCAAAAAAAAAACArEQIAgAAAAAAAAAAshIhCAAAAAAAAAAAyEqEIAAAAAAAAAAAICsRggAAAADIOoZh6Omnn7a6DAAAAAAWIwQBAAAAkFEXXnihDMNo9zj99NOtLg0AAADAEOOwugAAAAAA2ef000/Xww8/nDbmdrstqgYAAADAUMVMEAAAAAAZ53a7VV5envYoKiqSFFuq6r777tPcuXPl9Xp1wAEH6Kmnnko7/v3339fJJ58sr9erYcOG6dJLL1VjY2PaPkuXLtWhhx4qt9utiooKXXXVVWnbd+/era985SvKycnRxIkT9eyzzya37d27V/PmzdPw4cPl9Xo1ceLEdqENAAAAgMGPEAQAAABAv7vxxhv1ta99Te+++67mzZunb33rW1q3bp0kqampSXPmzFFRUZHefPNNPfnkk3rxxRfTQo777rtPV155pS699FK9//77evbZZzVhwoS0a9xyyy365je/qffee09nnHGG5s2bp5qamuT1P/roI/3rX//SunXrdN9996mkpKT/fgAAAAAA+oVhmqZpdREAAAAAsseFF16oxx57TB6PJ238Rz/6kX70ox/JMAxddtlluu+++5LbvvCFL+ioo47Svffeq9/97ne6/vrrtW3bNuXm5kqSli1bpjPPPFM7duxQWVmZRo4cqQULFuinP/1phzUYhqEf//jH+slPfiIpFqzk5eXpX//6l04//XSdddZZKikp0dKlS/vopwAAAABgIKAnCAAAAICM++IXv5gWckhScXFx8vXMmTPTts2cOVNr166VJK1bt05Tp05NBiCSdNxxxykajWr9+vUyDEM7duzQKaecss8apkyZknydm5srn8+n6upqSdLll1+ur33ta3r77bd12mmn6ZxzztGxxx7bo88KAAAAYOAiBAEAAACQcbm5ue2Wp8oUr9fbpf2cTmfae8MwFI1GJUlz587Vli1btGzZMr3wwgs65ZRTdOWVV+qXv/xlxusFAAAAYB16ggAAAADod//5z3/avZ88ebIkafLkyXr33XfV1NSU3L5y5UrZbDZNmjRJ+fn5GjdunFasWNGrGoYPH64LLrhAjz32mO666y49+OCDvTofAAAAgIGHmSAAAAAAMi4QCKiysjJtzOFwJJuPP/nkk5o+fbqOP/54/elPf9Lq1av10EMPSZLmzZunm2++WRdccIEWL16sXbt26eqrr9b555+vsrIySdLixYt12WWXqbS0VHPnzlVDQ4NWrlypq6++ukv13XTTTZo2bZoOPfRQBQIB/fOf/0yGMAAAAACyByEIAAAAgIxbvny5Kioq0sYmTZqkjz/+WJJ0yy236PHHH9cVV1yhiooK/eUvf9EhhxwiScrJydHzzz+va6+9VkcffbRycnL0ta99TXfeeWfyXBdccIH8fr9+/etf67rrrlNJSYm+/vWvd7k+l8ulRYsWafPmzfJ6vTrhhBP0+OOPZ+CTAwAAABhIDNM0TauLAAAAADB0GIahv//97zrnnHOsLgUAAABAlqMnCAAAAAAAAAAAyEqEIAAAAAAAAAAAICvREwQAAABAv2JFXgAAAAD9hZkgAAAAAAAAAAAgKxGCAAAAAAAAAACArEQIAgAAAAAAAAAAshIhCAAAAAAAAAAAyEqEIAAAAAAAAAAAICsRggAAAAAAAAAAgKxECAIAAAAAAAAAALISIQgAAAAAAAAAAMhK/z+1NCqinWnXKgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.8094412808450937\n",
      "precision: 0.2810924369747899\n",
      "recall: 0.5280189423835833\n",
      "auc: 0.784631354591382\n",
      "F1: 0.36687688511105015\n",
      "ks: 0.42252463273671614\n",
      "最佳阈值:  0.1566135222889941\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9386    0.8423    0.8878     10850\n",
      "           1     0.2811    0.5280    0.3669      1267\n",
      "\n",
      "    accuracy                         0.8094     12117\n",
      "   macro avg     0.6098    0.6852    0.6274     12117\n",
      "weighted avg     0.8698    0.8094    0.8334     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_1] | best_t: 0.1566135222889941 F1: 0.36687688511105015 AUC: 0.784631354591382 KS: 0.42252463273671614 Label1: 2380\n",
      "fold =  1 -----------------------------------------------------------------------------------------\n",
      "0:\ttest: 0.6623149\tbest: 0.6623149 (0)\ttotal: 31.7ms\tremaining: 5m 17s\n",
      "1000:\ttest: 0.7828709\tbest: 0.7829145 (997)\ttotal: 22.7s\tremaining: 3m 24s\n",
      "Stopped by overfitting detector  (200 iterations wait)\n",
      "\n",
      "bestTest = 0.7854911398\n",
      "bestIteration = 1654\n",
      "\n",
      "Shrink model to first 1655 iterations.\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABkEAAAHWCAYAAADAVi5JAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABu9ElEQVR4nO3deXhU5d3/8c+ZfSbJJIRAEiAsCuIKKAjiSiuKy+PS2tZafqLUat31QVuli6KtYrW19ql7K2qrrVYfq7ZYfJAW2yJuKK6IQtkUEgiQTNZZz++PWTKTPSHJSSbv13XNNWfus8x3wnHEfLzvr2GapikAAAAAAAAAAIAsY7O6AAAAAAAAAAAAgN5ACAIAAAAAAAAAALISIQgAAAAAAAAAAMhKhCAAAAAAAAAAACArEYIAAAAAAAAAAICsRAgCAAAAAAAAAACyEiEIAAAAAAAAAADISoQgAAAAAAAAAAAgKxGCAAAAAAAAAACArEQIAgAAAGDAmDVrlmbNmmV1GQAAAAAGCEIQAAAAAN3y2GOPyTAMvf3221aXAgAAAACtIgQBAAAAAAAAAABZiRAEAAAAAAAAAABkJUIQAAAAAL3m3Xff1amnniq/36/c3FydeOKJev3111sc9/777+uEE06Q1+vVqFGj9NOf/lSPPvqoDMPQ5s2b232PnTt36qKLLlJxcbE8Ho8mT56sxx9/vMVxTz31lKZOnaq8vDz5/X4ddthh+tWvfpXaHw6Hdcstt2jChAnyeDwaOnSojj32WC1fvnyffw4AAAAArOGwugAAAAAA2emjjz7ScccdJ7/fr+9///tyOp166KGHNGvWLL366quaMWOGJOmLL77Ql770JRmGoYULFyonJ0e//e1v5Xa7O3yPhoYGzZo1Sxs2bNCVV16pcePG6ZlnntGFF16oqqoqXXPNNZKk5cuX67zzztOJJ56on/3sZ5KkdevWadWqValjFi1apMWLF+s73/mOpk+frkAgoLffflvvvPOOTjrppF76KQEAAADoTYQgAAAAAHrFj370I4XDYf373//WfvvtJ0maN2+eJk6cqO9///t69dVXJUk/+9nPtHfvXr3zzjuaMmWKJGn+/PmaMGFCh+/x8MMPa926dXriiSc0d+5cSdKll16qE044QT/60Y/07W9/W3l5eVq6dKn8fr9efvll2e32Vq+1dOlSnXbaaXr44Yd74NMDAAAA6A9YDgsAAABAj4tGo/q///s/nX322akARJJKS0v1rW99S//+978VCAQkScuWLdPMmTNTAYgkFRYWpkKN9rz00ksqKSnReeedlxpzOp26+uqrVVtbmwpaCgoKVFdX1+7SVgUFBfroo4/02WefdfXjAgAAAOinCEEAAAAA9Lhdu3apvr5eEydObLHvoIMOUiwW07Zt2yRJW7Zs0fjx41sc19pYc1u2bNGECRNks2X+p81BBx2U2i9Jl19+uQ444ACdeuqpGjVqlL797W9r2bJlGefceuutqqqq0gEHHKDDDjtM3/ve9/T+++937gMDAAAA6JcIQQAAAABkveHDh2vt2rV68cUXdeaZZ+of//iHTj31VF1wwQWpY44//nht3LhRS5Ys0aGHHqrf/va3OuKII/Tb3/7WwsoBAAAA7AtCEAAAAAA9btiwYfL5fFq/fn2LfZ988olsNpvKysokSWPGjNGGDRtaHNfaWHNjxozRZ599plgs1uI9kvuTXC6XzjjjDN1///3auHGjvvvd7+p3v/tdxvsUFhZq/vz5+uMf/6ht27Zp0qRJWrRoUac+MwAAAID+hxAEAAAAQI+z2+06+eST9cILL2jz5s2p8YqKCv3hD3/QscceK7/fL0maM2eOVq9erbVr16aO27Nnj5588skO3+e0005TeXm5nn766dRYJBLRr3/9a+Xm5uqEE06QJO3evTvjPJvNpkmTJkmSgsFgq8fk5uZq/Pjxqf0AAAAABh6H1QUAAAAAGNiWLFnSor+GJC1atEjLly/Xscceq8svv1wOh0MPPfSQgsGg7rzzztRx3//+9/XEE0/opJNO0lVXXaWcnBz99re/1ejRo7Vnzx4ZhtHme19yySV66KGHdOGFF2rNmjUaO3asnn32Wa1atUr33HOP8vLyJEnf+c53tGfPHn35y1/WqFGjtGXLFv3617/WlClTUv1DDj74YM2aNUtTp05VYWGh3n77bT377LO68sore/gnBgAAAKCvGKZpmlYXAQAAAGDgeeyxxzR//vw292/btk27du3SwoULtWrVKsViMc2YMUO33XabZs6cmXHs2rVrdfXVV+vNN9/UsGHDdMUVVygnJ0dXX321ysvLVVxcLEmaNWuWJGnlypWpc3fu3Kkbb7xRf/nLXxQIBDRx4kQtWLBAF154YeqY//3f/9XDDz+s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rVixIjUWi8W0YsUKzZw508LKgO4xTVNXXnml/vznP+vvf/97i2mPrVm7dq0kqbS0VJI0c+ZMffDBBxl/iUz+x9XBBx/cK3UDPam2tlYbN25UaWmppk6dKqfTmfE9v379em3dujX1Pc89j4Hs0Ucf1fDhw3X66ae3exzf9cg248aNU0lJScb3eyAQ0BtvvJHx/V5VVaU1a9akjvn73/+uWCyWCgZnzpypf/7znwqHw6ljli9frokTJ7JEBPqlZADy2Wef6ZVXXtHQoUM7PGft2rWy2Wyp5YK47zHQff7559q9e3fG32v4vke2euSRRzR16lRNnjy5w2P5vkefsLozO7rnqaeeMt1ut/nYY4+ZH3/8sXnJJZeYBQUFZnl5udWlAV122WWXmfn5+ebKlSvNHTt2pB719fWmaZrmhg0bzFtvvdV8++23zU2bNpkvvPCCud9++5nHH3986hqRSMQ89NBDzZNPPtlcu3atuWzZMnPYsGHmwoULrfpYQLuuu+46c+XKleamTZvMVatWmbNnzzaLiorMnTt3mqZpmpdeeqk5evRo8+9//7v59ttvmzNnzjRnzpyZOp97HgNVNBo1R48ebd5www0Z43zXI1vU1NSY7777rvnuu++aksy7777bfPfdd80tW7aYpmmad9xxh1lQUGC+8MIL5vvvv2+eddZZ5rhx48yGhobUNU455RTz8MMPN9944w3z3//+tzlhwgTzvPPOS+2vqqoyi4uLzfPPP9/88MMPzaeeesr0+XzmQw891OefFzDN9u/7UChknnnmmeaoUaPMtWvXZvx9PxgMmqZpmq+99pr5y1/+0ly7dq25ceNG84knnjCHDRtmzps3L/Ue3Pfob9q772tqaszrr7/eXL16tblp0ybzlVdeMY844ghzwoQJZmNjY+oafN9joOno7zmmaZrV1dWmz+czH3jggRbn830PqxCCDGC//vWvzdGjR5sul8ucPn26+frrr1tdEtAtklp9PProo6ZpmubWrVvN448/3iwsLDTdbrc5fvx483vf+55ZXV2dcZ3Nmzebp556qun1es2ioiLzuuuuM8PhsAWfCOjYueeea5aWlpoul8scOXKkee6555obNmxI7W9oaDAvv/xyc8iQIabP5zO/8pWvmDt27Mi4Bvc8BqKXX37ZlGSuX78+Y5zvemSLf/zjH63+veaCCy4wTdM0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",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.8289180490220351\n",
      "precision: 0.2978402812656956\n",
      "recall: 0.4676656151419558\n",
      "auc: 0.7854911397727276\n",
      "F1: 0.3639153114452286\n",
      "ks: 0.4436852980097018\n",
      "最佳阈值:  0.1764105133133846\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9333    0.8711    0.9012     10849\n",
      "           1     0.2978    0.4677    0.3639      1268\n",
      "\n",
      "    accuracy                         0.8289     12117\n",
      "   macro avg     0.6156    0.6694    0.6325     12117\n",
      "weighted avg     0.8668    0.8289    0.8449     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_2] | best_t: 0.1764105133133846 F1: 0.3639153114452286 AUC: 0.7854911397727276 KS: 0.4436852980097018 Label1: 1991\n",
      "fold =  2 -----------------------------------------------------------------------------------------\n",
      "0:\ttest: 0.6620956\tbest: 0.6620956 (0)\ttotal: 33.3ms\tremaining: 5m 33s\n",
      "1000:\ttest: 0.7688337\tbest: 0.7688337 (1000)\ttotal: 22.4s\tremaining: 3m 21s\n",
      "Stopped by overfitting detector  (200 iterations wait)\n",
      "\n",
      "bestTest = 0.769261686\n",
      "bestIteration = 1086\n",
      "\n",
      "Shrink model to first 1087 iterations.\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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87vzJUlm3U6LKwEAAAAAAAAAoHchBOnjgmkDJElGwy6LKwEAAAAAAAAAoHchBOnjjIwCSZKjaY/FlQAAAAAAAAAAetKwYcN01113xfYNw9A///nPdvtv2rRJhmFozZo1B3TfZF2nJzisLgAHxpE1UJLk9u21uBIAAAAAAAAAgJV27NihvLy8pF7z/PPPV1VVVUK4UlZWph07dqigoCCp9+oOhCB9nCunSJKUESAEAQAAAAAAAID+rLi4uEfuY7fbe+xeB4rpsPq49NxwCJIVrLK2EAAAAAAAAADoLUxT8tX3/Mc0O1zigw8+qNLSUoVCoYT2M844QxdccIG++OILnXHGGSoqKlJmZqaOOOIIvfLKK/u8ZsvpsFauXKlJkybJ4/FoypQpev/99xP6B4NBfe9739Pw4cOVlpam0aNH63e/+13s+I033qhHH31Uzz33nAzDkGEYev3119ucDuuNN97Q1KlT5Xa7VVJSomuuuUaBQCB2fMaMGbr88sv1k5/8RPn5+SouLtaNN97Y4Z9XVzESpI/LzA+nbTlmrcxQSIaNXAsAAAAAAABAP+dvkG4p7fn7/nS75MroUNf//d//1WWXXabXXntNxx9/vCRpz549WrJkiV566SXV1dXplFNO0c033yy3260///nPOu2007R+/XoNGTJkv9evq6vT//zP/+iEE07QY489po0bN+qKK65I6BMKhTR48GA99dRTGjBggN566y1ddNFFKikp0be//W1dddVVWrdunWpqavTwww9LkvLz87V9+/aE62zbtk2nnHKKzj//fP35z3/Wp59+qgsvvFAejych6Hj00Ue1cOFCvfPOO1qxYoXOP/98HXXUUTrhhBM69DPrCkKQPi63oESS5DSCqq7erZy8gRZXBAAAAAAAAADYn7y8PJ188sn661//GgtBnn76aRUUFOi4446TzWbThAkTYv1/+ctf6tlnn9Xzzz+vBQsW7Pf6f/3rXxUKhfSnP/1JHo9Hhx56qL766itdcsklsT5Op1M33XRTbH/48OFasWKF/v73v+vb3/62MjMzlZaWJq/Xu8/pr+69916VlZXp7rvvlmEYGjNmjLZv366rr75a119/vWyR/3l//PjxuuGGGyRJo0aN0t13361ly5YRgqB9nrR01ZppyjIaVbNrByEIAAAAAAAAADjTw6MyrLhvJ8yePVsXXnih7r33Xrndbj3++OP6zne+I5vNprq6Ot1444168cUXtWPHDgUCATU2NmrLli0duva6des0fvx4eTyeWNv06dNb9bvnnnu0ePFibdmyRY2NjfL5fJo4cWKnnmPdunWaPn26DMOItR111FGqq6vTV199FRu5Mn78+ITzSkpKVFlZ2al7dRYhSAqotuUoy2xU/d4dksbvtz8AAAAAAAAApDTD6PC0VFY67bTTZJqmXnzxRR1xxBH673//q9/+9reSpKuuukpLly7Vr3/9a40cOVJpaWn61re+JZ/Pl7T7P/HEE7rqqqv0m9/8RtOnT1dWVpbuuOMOvfPOO0m7Rzyn05mwbxhGqzVRko0QJAXU2XOlQLmaqro3MQMAAAAAAAAAJI/H49E3v/lNPf744/r88881evRoHX744ZKk5cuX6/zzz9c3vvENSeE1PjZt2tTha48dO1Z/+ctf1NTUFBsN8vbbbyf0Wb58uY488khdeumlsbYvvvgioY/L5VIwGNzvvf7xj3/INM3YaJDly5crKytLgwcP7nDN3YFVtFNAozNPkuSrqbC4EgAAAAAAAABAZ8yePVsvvviiFi9erNmzZ8faR40apWeeeUZr1qzRBx98oHPPPbdToybOPfdcGYahCy+8UJ988oleeukl/frXv07oM2rUKL333nt6+eWXtWHDBl133XV69913E/oMGzZMH374odavX69du3bJ7/e3utell16qrVu36rLLLtOnn36q5557TjfccIMWLlwYWw/EKoQgKcDnKZAkhWp3WlwJAAAAAAAAAKAzvv71rys/P1/r16/XueeeG2u/8847lZeXpyOPPFKnnXaaZs2aFRsl0hGZmZn617/+pbVr12rSpEn62c9+pttuuy2hzw9+8AN985vf1Nlnn61p06Zp9+7dCaNCJOnCCy/U6NGjNWXKFA0cOFDLly9vda9BgwbppZde0sqVKzVhwgRdfPHF+t73vqef//znnfxpJJ9hmqZpdRH7U1NTo5ycHFVXVys7O9vqcnqdtx66Ukdue1grC76pqQsetrocAAAAAAAAAOgxTU1N2rhxo4YPH56wCDj6vn392nY0N2AkSAqwZRZJkpxNuyyuBAAAAAAAAACA3oMQJAU4coolSWleQhAAAAAAAAAAAKIIQVJAWl44BMkM7LW4EgAAAAAAAAAAeg9CkBSQOWCQJCnPJAQB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XH3ve99TXV1dTz8K0KsFg0Fdd911Gj58uNLS0nTQQQfpl7/8pUzTjPXhfQM67z//+Y9OO+00lZaWyjAM/fOf/0w4nqz36sMPP9Qxxxwjj8ejsrIy3X777d39aECvsq93ze/36+qrr9a4ceOUkZGh0tJSzZkzR9u3b0+4Bu8a+hpCkD7qySef1MKFC3XDDTdo9erVmjBhgmbNmqXKykqrSwP6hDfeeEPz58/X22+/raVLl8rv9+vEE09UfX19rM8Pf/hD/etf/9JTTz2lN954Q9u3b9c3v/nN2PFgMKhTTz1VPp9Pb731lh599FE98sgjuv766614JKDXe/fdd/XAAw9o/PjxCe28a8CB27t3r4466ig5nU79+9//1ieffKLf/OY3ysvLi/W5/fbb9fvf/17333+/3nnnHWVkZGjWrFlqamqK9Zk9e7Y+/vhjLV26VC+88IL+85//6KKLLrLikYBe67bbbtN9992nu+++W+vWrdNtt92m22+/XX/4wx9ifXjfgM6rr6/XhAkTdM8997R5PBnvVU1NjU488UQNHTpUq1at0h133KEbb7xRDz74YLc/H9Bb7Otda2ho0OrVq3Xddddp9erVeuaZZ7R+/XqdfvrpCf1419DnmOiTpk6das6fPz+2HwwGzdLSUnPRokUWVgX0XZWVlaYk84033jBN0zSrqqpMp9NpPvXUU7E+69atMyWZK1asME3TNF966SXTZrOZ5eXlsT733XefmZ2dbXq93p59AKCXq62tNUeNGmUuXbrUPPbYY80rrrjCNE3eNSBZrr76avPoo49u93goFDKLi4vNO+64I9ZWVVVlut1u829/+5tpmqb5ySefmJLMd999N9bn3//+t2kYhrlt27buKx7oY0499VTzggsuSGj75je/ac6ePds0Td43IBkkmc8++2xsP1nv1b333mvm5eUl/Bny6quvNkePHt3NTwT0Ti3ftbasXLnSlGRu3rzZNE3eNfRNjATpg3w+n1atWqWZM2fG2mw2m2bOnKkVK1ZYWBnQd1VXV0uS8vPzJUmrVq2S3+9PeM/GjBmjIUOGxN6zFStWaNy4cSoqKor1mTVrlmpqavTxxx/3YPVA7zd//nydeuqpCe+UxLsGJMvzzz+vKVOm6H//939VWFioSZMm6aGHHood37hxo8rLyxPetZycHE2bNi3hXcvNzdWUKVNi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47t27dI3vvENpaena9SoUXr++edjx/bu3avZs2dr4MCBSktL06hRo1qFNgAAAAD6PkIQAAAAAD3uuuuu01lnnaUPPvhAs2fP1ne+8x2tW7dOklRfX69Zs2YpLy9P7777rp566im98sorCSHHfffdp/nz5+uiiy7S2rVr9fzzz2vkyJEJ97jpppv07W9/Wx9++KFOOeUUzZ49W3v27Ind/5NPPtG///1vrVu3Tvfdd58KCgp67gcAAAAAoEcYpmmaVhcBAAAAIHWcf/75euyxx+TxeBLaf/rTn+qnP/2pDMPQxRdfrPvuuy927P/9v/+nww8/XPfee68eeughXX311dq6dasyMjIkSS+99JJOO+00bd++XUVFRRo0aJDmzZunX/3qV23WYBiGfv7zn+uXv/ylpHCwkpmZqX//+9866aSTdPrpp6ugoECLFy/upp8CAAAAgN6ANUEAAAAAJN1xxx2XEHJIUn5+fmx7+vTpCcemT5+uNWvWSJLWrVunCRMmxAIQSTrqqKMUCoW0fv16GYah7du36/jjj99nDePHj49tZ2RkKDs7W5WVlZKkSy65RGeddZZWr16tE088UWeeeaaOPPLILj0rAAAAgN6LEAQAAABA0mVkZLSanipZ0tLSOtTP6XQm7BuGoVAoJEk6+eSTtXnzZr300ktaunSpjj/+eM2fP1+//vWvk14vAAAAAOuwJggAAACAHvf222+32h87dqwkaezYsfrggw9UX18fO758+XLZbDaNHj1aWVlZGjZsmJYtW3ZANQwcOFBz587VY489prvuuksPPvjgAV0PAAAAQO/DSBAAAAAASef1elVeXp7Q5nA4YouPP/XUU5oyZYqOPvpoPf7441q5cqX+9Kc/SZJmz56tG264QXPnztWNN96onTt36rLLLtN5552noqIiSdKNN96oiy++WIWFhTr55JNVW1ur5cuX67LLLutQfddff70mT56sQw89VF6vVy+88EIshAEAAACQOghBAAAAACTdkiVLVFJSktA2evRoffrpp5Kkm266SU888YQuvfRSlZSU6G9/+5sOOeQQSVJ6erpefvllXXHFFTriiCOUnp6us846S3feeWfsWnPnzlVTU5N++9vf6qqrrlJBQYG+9a1vdbg+l8ula6+9Vps2bVJaWpqOOeYYPfHEE0l4cgAAAAC9iWGapml1EQAAAAD6D8Mw9Oyzz+rMM8+0uhQAAAAAKY41QQAAAAAAAAAAQEoiBAEAAAAAAAAAACmJNUEAAAAA9Chm5AUAAADQUxgJAgAAAAAAAAAAUhIhCAAAAAAAAAAASEmEIAAAAAAAAAAAICURggAAAAAAAAAAgJRECAIAAAAAAAAAAFISIQgAAAAAAAAAAEhJhCAAAAAAAAAAACAlEYIAAAAAAAAAAICU9P8BjIHOoMRqTI8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.8006932409012132\n",
      "precision: 0.26601387188902487\n",
      "recall: 0.5141955835962145\n",
      "auc: 0.7692616860121432\n",
      "F1: 0.35063189029308955\n",
      "ks: 0.4046973466859234\n",
      "最佳阈值:  0.1535775896147861\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9363    0.8342    0.8823     10849\n",
      "           1     0.2660    0.5142    0.3506      1268\n",
      "\n",
      "    accuracy                         0.8007     12117\n",
      "   macro avg     0.6011    0.6742    0.6165     12117\n",
      "weighted avg     0.8661    0.8007    0.8266     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_3] | best_t: 0.1535775896147861 F1: 0.35063189029308955 AUC: 0.7692616860121432 KS: 0.4046973466859234 Label1: 2451\n",
      "fold =  3 -----------------------------------------------------------------------------------------\n",
      "0:\ttest: 0.6682614\tbest: 0.6682614 (0)\ttotal: 29.9ms\tremaining: 4m 59s\n",
      "1000:\ttest: 0.7808799\tbest: 0.7809838 (989)\ttotal: 22.5s\tremaining: 3m 22s\n",
      "Stopped by overfitting detector  (200 iterations wait)\n",
      "\n",
      "bestTest = 0.7814140221\n",
      "bestIteration = 1159\n",
      "\n",
      "Shrink model to first 1160 iterations.\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABkEAAAHWCAYAAADAVi5JAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABs5UlEQVR4nO3deXxU1f3/8fedPftCIAkhLCoCLiCCUlwqrSgu1drVWn6CaLUqbqWurQvWVqq21n7rbtXaqtXqty5Vi1+KW0UUBVFUxI0dkrBlT2a9vz9myUwyWZnkJpPX8/GYx9w599x7P3fIVczbc45hmqYpAAAAAAAAAACANGOzugAAAAAAAAAAAIDeQAgCAAAAAAAAAADSEiEIAAAAAAAAAABIS4QgAAAAAAAAAAAgLRGCAAAAAAAAAACAtEQIAgAAAAAAAAAA0hIhCAAAAAAAAAAASEuEIAAAAAAAAAAAIC0RggAAAAAAAAAAgLRECAIAAABgwJgxY4ZmzJhhdRkAAAAABghCEAAAAAA98pe//EWGYei9996zuhQAAAAASIoQBAAAAAAAAAAApCVCEAAAAAAAAAAAkJYIQQAAAAD0mvfff18nnniicnNzlZ2drWOPPVZvv/12m34ffvihjjnmGGVkZGjEiBH69a9/rYcffliGYWjDhg0dXqOqqkrnnHOOiouL5fF4NGnSJD3yyCNt+j3xxBOaMmWKcnJylJubq4MPPlh//OMfY/v9fr9uvPFGjR07Vh6PR0OGDNFRRx2lJUuW7PX3AAAAAMAaDqsLAAAAAJCePv74Yx199NHKzc3VlVdeKafTqfvuu08zZszQ66+/rmnTpkmStm7dqm984xsyDEPXXHONsrKy9Oc//1lut7vTazQ1NWnGjBn64osvdNFFF2nMmDF66qmndNZZZ6m6ulqXXnqpJGnJkiU644wzdOyxx+qWW26RJK1du1bLli2L9Vm4cKEWLVqkn/zkJzr88MNVW1ur9957T6tWrdJxxx3XS98SAAAAgN5ECAIAAACgV1x77bXy+/168803tc8++0iS5syZo3HjxunKK6/U66+/Lkm65ZZbtGfPHq1atUqHHHKIJGnevHkaO3Zsp9e4//77tXbtWj366KOaPXu2JOn888/XMccco2uvvVZnn322cnJy9OKLLyo3N1cvv/yy7HZ70nO9+OKLOumkk3T//fen4O4BAAAA9AdMhwUAAAAg5YLBoP7v//5Pp512WiwAkaTS0lL9+Mc/1ptvvqna2lpJ0uLFizV9+vRYACJJhYWFsVCjIy+99JJKSkp0xhlnxNqcTqcuueQS1dfXx4KW/Px8NTQ0dDi1VX5+vj7++GN9/vnn3b1dAAAAAP0UIQgAAACAlNuxY4caGxs1bty4NvsmTJigUCikzZs3S5I2btyo/fbbr02/ZG2tbdy4UWPHjpXNlvifNhMmTIjtl6QLL7xQ+++/v0488USNGDFCZ599thYvXpxwzK9+9StVV1dr//3318EHH6wrrrhCH374YdduGAAAAEC/RAgCAAAAIO0NGzZMq1ev1vPPP69TTz1Vr776qk488UTNnTs31ufrX/+6vvzySz300EM66KCD9Oc//1mHHnqo/vznP1tYOQAAAIC9QQgCAAAAIOWGDh2qzMxMrVu3rs2+Tz/9VDabTeXl5ZKkUaNG6YsvvmjTL1lba6NGjdLnn3+uUCjU5hrR/VEul0unnHKK7r77bn355Zf66U9/qr/+9a8J1yksLNS8efP097//XZs3b9bEiRO1cOHCLt0zAAAAgP6HEAQAAABAytntdh1//PF67rnntGHDhlh7ZWWlHn/8cR111FHKzc2VJM2aNUvLly/X6tWrY/12796txx57rNPrnHTSSaqoqNCTTz4ZawsEAvrTn/6k7OxsHXPMMZKkXbt2JRxns9k0ceJESZLX603aJzs7W/vtt19sPwAAAICBx2F1AQAAAAAGtoceeqjN+hqStHDhQi1ZskRHHXWULrzwQjkcDt13333yer269dZbY/2uvPJKPfroozruuON08cUXKysrS3/+8581cuRI7d69W4ZhtHvt8847T/fdd5/OOussrVy5UqNHj9bTTz+tZcuW6Y477lBOTo4k6Sc/+Yl2796tb37zmxoxYoQ2btyoP/3pTzrkkENi64cccMABmjFjhqZMmaLCwkK99957evrpp3XRRRel+BsDAAAA0FcM0zRNq4sAAAAAMPD85S9/0bx589rdv3nzZu3YsUPXXHONli1bplAopGnTpuk3v/mNpk+fntB39erVuuSSS7RixQoNHTpU8+fPV1ZWli655BJVVFSouLhYkjRjxgxJ0muvvRY7tqqqSldffbX+9a9/qba2VuPGjdOCBQt01llnxfr87//+r+6//36tXr1a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VVq0aFGbfTw7QPu++uor3XPPPRo7dqxefvllXXDBBbrkkkv0yCOPSGr5+e/o72wVFRUaNmxYwn6Hw6HCwkKeH6Stq6++Wj/60Y80fvx4OZ1OTZ48WZdddplmz54tiWcH6KpUPSv8XQ6DXXNzs6666iqdccYZys3NlcSzA3TklltukcPh0CWXXJJ0f398fhwpPyMAWGz+/Pn66KOP9Oabb1pdCtDvbd68WZdeeqmWLFkij8djdTnAgBIKhTR16lTdfPPNkqTJkyfro48+0r333qu5c+daXB3Qf/3jH//QY489pscff1wHHnigVq9ercsuu0zDhw/n2QEA9Cm/368f/vCHMk1T99xzj9XlAP3eypUr9cc//lGrVq2SYRhWl9NljAQZgIqKimS321VZWZnQXllZqZKSEouqAvqHiy66SC+88IJeffVVjRgxItZeUlIin8+n6urqhP7xz01JSUnS5yq6D0hHK1euVFVVlQ499FA5HA45HA69/vrr+p//+R85HA4VFxfz7ADtKC0t1QEHHJDQNmHCBG3atElSy89/R39nKykpUVVVVcL+QCCg3bt38/wgbV1xxRWx0SAHH3ywzjzzTP3sZz+LjUjk2QG6JlXPCn+Xw2AVDUA2btyoJUuWxEaBSDw7QHv++9//qqqqSiNHjoz9DmHjxo36+c9/rtGjR0vqn88PIcgA5HK5NGXKFC1dujTWFgqFtHTpUk2fPt3CygDrmKapiy66SM8884xeeeUVjRkzJmH/lClT5HQ6E56bdevWadOmTbHnZvr06VqzZk3CP6ijfxFq/UsuIF0ce+yxWrNmjVavXh17TZ06VbNnz45t8+wAyR155JFat25dQttnn32mUaNGSZLGjBmjkpKShOentrZW77zzTsLzU11drZUrV8b6vPLKKwqFQpo2bVof3AXQ9xobG2WzJf6nqN1uVygUksSzA3RVqp6V6dOn64033pDf74/1WbJkicaNG6eCgoI+uhugb0UDkM8//1z/+c9/NGTIkIT9PDtAcmeeeaY+/PDDhN8hDB8+XFdccYVefvllSf30+emV5dbR65544gnT7Xabf/nLX8xPPvnEPO+888z8/HyzoqLC6tIAS1xwwQVmXl6e+dprr5nbt2+PvRobG2N9zj//fHPkyJHmK6+8Yr733nvm9OnTzenTp8f2BwIB86CDDjKPP/54c/Xq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",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.7961541635718412\n",
      "precision: 0.2697318007662835\n",
      "recall: 0.555205047318612\n",
      "auc: 0.7814140220805652\n",
      "F1: 0.3630737493553378\n",
      "ks: 0.43008295986226763\n",
      "最佳阈值:  0.15125044113182023\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9407    0.8243    0.8787     10849\n",
      "           1     0.2697    0.5552    0.3631      1268\n",
      "\n",
      "    accuracy                         0.7962     12117\n",
      "   macro avg     0.6052    0.6898    0.6209     12117\n",
      "weighted avg     0.8705    0.7962    0.8247     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_4] | best_t: 0.15125044113182023 F1: 0.3630737493553378 AUC: 0.7814140220805652 KS: 0.43008295986226763 Label1: 2610\n",
      "fold =  4 -----------------------------------------------------------------------------------------\n",
      "0:\ttest: 0.6701588\tbest: 0.6701588 (0)\ttotal: 31.7ms\tremaining: 5m 17s\n",
      "1000:\ttest: 0.7659865\tbest: 0.7660041 (992)\ttotal: 22.2s\tremaining: 3m 19s\n",
      "Stopped by overfitting detector  (200 iterations wait)\n",
      "\n",
      "bestTest = 0.7666930046\n",
      "bestIteration = 1466\n",
      "\n",
      "Shrink model to first 1467 iterations.\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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9bYcSVJTLSEIAAAAAAAAAADJCEH6uEZbriTJV0cIAgAAAAAAAABAMkKQPq7JHg1BQg27La4EAAAAAAAAANCThg8frttuuy3x2jAMPfPMM+2OX79+vQzD0MqVK7t033Rdpyc4rC4AXRNw5kkBKdRICAIAAAAAAAAA/dnWrVtVWFiY1muee+65qq6uTglXKioqtHXrVhUXF6f1Xt2BEKSPC7vypAbJJAQBAAAAAAAAgH6trKysR+5jt9t77F5dxXJYfVzYnS9JMnw1FlcCAAAAAAAAAL2EaUqBhp5/mGaHS7z33ns1aNAgRSKRlP2nnXaazjvvPK1du1annXaaSktLlZOTo8MPP1wvv/zyHq/Zcjms5cuX67DDDpPH49GkSZP0/vvvp4wPh8M6//zzNWLECGVlZWn06NH64x//mDg+f/58PfTQQ3r22WdlGIYMw9Brr73W5nJYr7/+uiZPniy3263y8nJdffXVCoVCiePTpk3Tj370I/3sZz9TUVGRysrKNH/+/A5/vfYVM0H6Ok+BJMnmJwQBAAAAAAAAAElSsFG6cVDP3/fnWyRXdoeG/r//9/90+eWX69VXX9Vxxx0nSdq1a5cWLVqkF198UfX19TrppJP0m9/8Rm63W3/96191yimnaPXq1Ro6dOher19fX6//+Z//0fHHH6+HH35Y69at0xVXXJEyJhKJaMiQIXriiSc0YMAAvfnmm7rwwgtVXl6u7373u7ryyiu1atUq1dbW6oEHHpAkFRUVacuWLSnX2bx5s0466SSde+65+utf/6rPPvtMF1xwgTweT0rQ8dBDD2nu3Ll6++23tWzZMp177rk68sgjdfzxx3foa7YvCEH6OMNbIElyBGutLQQAAAAAAAAA0GGFhYWaOXOm/v73vydCkCeffFLFxcX6+te/LpvNpnHjxiXG/+pXv9LTTz+t5557Tpdddtler//3v/9dkUhE999/vzwejw455BB99dVXuvjiixNjnE6nrr/++sTrESNGaNmyZfrHP/6h7373u8rJyVFWVpb8fv8el7+68847VVFRodtvv12GYejAAw/Uli1bdNVVV+naa6+VzRZdlGrs2LG67rrrJEmjRo3S7bffriVLlhCCoH2O7GiTGzchCAAAAAAAAABEOb3RWRlW3LcTZs2apQsuuEB33nmn3G63HnnkEX3ve9+TzWZTfX295s+f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1iSONzU1mZdccolZWFhoer1e85vf/Ka5devWlGvwWQKavfTSS6Ykc/Xq1Sn7+dkEtO/VV19t889255xzjmmaphmJRMxrrrnGLC0tNd1ut3nccce1+ozt3LnTPPPMM82cnBwzLy/PnDNnjllXV5cy5oMPPjCPOuoo0+12m4MHDzZvuummnnqLQI/Y02dp3bp17f496tVXXzVN0zRXrFhhTpkyxczPzzc9Ho950EEHmTfeeGPKP+qaJp8l9A97+jw1NjaaJ5xwgjlw4EDT6XSaw4YNMy+44IJW/3mZn01AzzBM0zR7YMIJAAAAAAAAAABAj6InCAAAAAAAAAAAyEiEIAAAAAAAAAAAICMRggAAAAAAAAAAgIxECAIAAAAAAAAAADISIQgAAAAAAAAAAMhIhCAAAAAAAAAAACAjEYIAAAAAAAAAAICMRAgCAAAAAAAAAAAyEiEIAAAAgIxjGIaeeeYZq8sAAAAAYDFCEAAAAABpde6558owjFaPE0880erSAAAAAPQzDqsLAAAAAJB5TjzxRD3wwAMp+9xut0XVAAAAAOivmAkCAAAAIO3cbrfKyspSHoWFhZKiS1XdddddmjlzprKysjRy5Eg9+eSTKed/9NFH+sY3vqGsrCwNGDBAF154oerr61PGLFy4UIcccojcbrfKy8t12WWXpRzfsWOHvvnNb8rr9WrUqFF67rnnEsd2796tWbNmaeDAgcrKytKoUaNahTYAAAAA+j5CEAAAAAA97pprrtG3v/1tffDBB5o1a5a+973vadWqVZKkhoYGzZgxQ4WFhXrnnXf0xBNP6OWXX04JOe666y5deumluvDCC/XRRx/pueee0/77759yj+uvv17f/e539eGHH+qkk07SrFmztGvXrsT9P/30U/3rX//SqlWrdNddd6m4uLjnvgAAAAAAeoRhmqZpdREAAAAAMse5556rhx9+WB6PJ2X/z3/+c/385z+XYRi66KKLdNdddyWOfe1rX9OECRN055136r777tNVV12lTZs2KTs7W5L04osv6pRTTtGWLVtUWlqqwYMHa86cOfr1r3/dZg2GYeiXv/ylfvWrX0mKBis5OTn617/+pRNPPFGnnnqqiouLtXDhwm76KgAAAADoDegJAgAAACDtvv71r6eEHJJUVFSU2J46dWrKsalTp2rlypWSpFWrVmncuHGJAESSjjzySEUiEa1evVqGYWjLli067rjj9ljD2LFjE9vZ2dnKy8vTtm3bJEkXX3yxvv3tb+u9997TCSecoNNPP11HHHHEPr1XAAAAAL0XIQgAAACAtMvOzm61PFW6ZGVldWic0+lMeW0YhiKRiCRp5syZ2rBhg1588UUtXrxYxx13nC699FL97ne/S3u9AAAAAKxDTxAAAAAAPe6tt95q9fqggw6SJB100EH64IMP1NDQkDi+dOlS2Ww2jR49Wrm5uRo+fLiWLFnSpRoGDhyoc845Rw8//LBuu+023XvvvV26HgAAAIDeh5kgAAAAANLO7/ersrIyZZ/D4Ug0H3/iiSc0adIkHXXUUXrkkUe0fPly3X///ZKkWbNm6brrrtM555yj+fPna/v27br88st19tlnq7S0VJI0f/58XXTRRSopKdHMmTNVV1enpUuX6vLLL+9Qfddee60mTpyoQw45RH6/X88//3wihAEAAACQOQhBAAAAAKTdokWLVF5enrJv9OjR+uyzzyRJ119/vR577DFdcsklKi8v16OPPqqDDz5YkuT1evXSSy/piiuu0OGHHy6v16tvf/vbuvXWWxPXOuecc+Tz+fSHP/xBV155pYqLi/Wd73ynw/W5XC7NmzdP69evV1ZWlo4++mg99thjaXjnAAAAAHoTwzRN0+oiAAAAAPQfhmHo6aef1umnn251KQAAAAAyHD1BAAAAAAAAAABARiIEAQAAAAAAAAAAGYmeIAAAAAB6FCvyAgAAAOgpzAQBAAAAAAAAAAAZiRAEAAAAAAAAAABkJEIQAAAAAAAAAACQkQhBAAAAAAAAAABARiIEAQAAAAAAAAAAGYkQBAAAAAAAAAAAZCRCEAAAAAAAAAAAkJEIQQAAAAAAAAAAQEb6//1IA0Ae5+P0AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.8191647408385606\n",
      "precision: 0.2822808671065033\n",
      "recall: 0.47277032359905286\n",
      "auc: 0.7666930046328001\n",
      "F1: 0.3534966066686338\n",
      "ks: 0.39693560516418136\n",
      "最佳阈值:  0.17357092722960593\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9332    0.8596    0.8949     10849\n",
      "           1     0.2823    0.4728    0.3535      1267\n",
      "\n",
      "    accuracy                         0.8192     12116\n",
      "   macro avg     0.6077    0.6662    0.6242     12116\n",
      "weighted avg     0.8651    0.8192    0.8383     12116\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_5] | best_t: 0.17357092722960593 F1: 0.3534966066686338 AUC: 0.7666930046328001 KS: 0.39693560516418136 Label1: 2122\n",
      "*******************************************************************************************************************\n",
      "******************************\n",
      "accuracy: 0.8000462168229235\n",
      "precision: 0.269107771026543\n",
      "recall: 0.5310823603660461\n",
      "auc: 0.7774930468514067\n",
      "F1: 0.35721107927411655\n",
      "ks: 0.4165536424083608\n",
      "最佳阈值:  0.1535211705637304\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9382    0.8315    0.8816     54246\n",
      "           1     0.2691    0.5311    0.3572      6338\n",
      "\n",
      "    accuracy                         0.8000     60584\n",
      "   macro avg     0.6036    0.6813    0.6194     60584\n",
      "weighted avg     0.8682    0.8000    0.8267     60584\n",
      "\n",
      "******************************\n",
      "耗时: 0:03:10.793307\n",
      "[平均评估] | F1: 0.3596 AUC: 0.7775 KS: 0.4196\n",
      "[全局评估] | F1: 0.3572 AUC: 0.7775 KS: 0.4166\n",
      "[1的个数]  | train: 12508/6338 test: 1269 best_t: 0.1535211705637304\n"
     ]
    }
   ],
   "source": [
    "set_model = 'cat'\n",
    "save_path = None\n",
    "# save_path = 'model/' + set_model\n",
    "use_feats = X_train.columns.tolist()\n",
    "\n",
    "use_feats.remove('CUST_NO')\n",
    "use_feats.remove('FLAG')\n",
    "use_feats.remove('DATA_DAT')\n",
    "\n",
    "# for i in remove_cols:\n",
    "#     if i in use_feats:\n",
    "#        use_feats.remove(i)\n",
    "\n",
    "cate_cols = list(X_train.select_dtypes(\"category\").columns)\n",
    "\n",
    "set_parameters = {\n",
    "    'learning_rate': 0.02,\n",
    "    'iterations': 10000,\n",
    "    'depth': 7, #7\n",
    "    'loss_function': 'Logloss',\n",
    "    'eval_metric': 'AUC',\n",
    "    'random_seed': 2024,\n",
    "    # 'l2_leaf_reg': 5,\n",
    "    # 'bagging_temperature':0.2, # 0-1\n",
    "    # 'random_strength':8, # 1-10\n",
    "    'border_count':200,# 10-254   200 当前最好\n",
    "    # 'task_type': 'GPU',  # 或者 'CPU'Q\n",
    "    # 'devices': '0',  # 如果使用GPU的话\n",
    "    'verbose': 1000\n",
    "}\n",
    "# 原本24\n",
    "res_dfs, print_auc = model_train(\n",
    "    X_train, X_test, y, use_feats, [], set_model=set_model, set_seeds=[24], set_parameters=set_parameters, set_fold=5, set_earlystop=200, save_path=save_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "id": "801fe545-91d0-4f82-8ba5-e0781e6084a6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T09:48:43.224061Z",
     "iopub.status.busy": "2024-11-13T09:48:43.223590Z",
     "iopub.status.idle": "2024-11-13T09:50:05.296551Z",
     "msg_id": "2dbe2781-e8ee-496b-8fbc-4f71264bcd9c",
     "shell.execute_reply": "2024-11-13T09:50:05.295784Z",
     "shell.execute_reply.started": "2024-11-13T09:48:43.224031Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "use model:\t lgb\n",
      "start time:\t 2024-11-13 17:48:43\n",
      "train data shape:\t (60584, 692)\n",
      "test data shape:\t (6230, 692)\n",
      "seed =  24 --------------------------------------------------------------------------------------------\n",
      "fold =  0 -----------------------------------------------------------------------------------------\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "Early stopping, best iteration is:\n",
      "[598]\ttraining's auc: 0.921795\tvalid_1's auc: 0.780926\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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QQ899JBWr16tzZs3a926ddqzZ4/KysoGbf+zn/1Mt956qx555BGtXbtWe/fu1Y033iiLxaJ77733pI4J4PSLxRN69VCHntnepOd3NavRnxlmLq706r0Ly/TeRWVaPq1ANitDagEAAAAAAACY+CyGMbD08omtXr1a5513nh544AFJUiKRUE1Njb74xS/q1ltvHbT9zTffrF27dmnLli3pdf/4j/+oV199VS+++OJJHfNYgUBAPp9Pfr9fXq93NKcDTFmGYWhvc1DbDrXr9dou/WFPi7p6ounn3XabLphbovcuLNN7Fpaq0ufOYmsBAAAAAAAAYORGkxuMqkdJX1+fXnvtNW3cuDG9zmq16pJLLtHWrVuH3Gft2rV67LHHtG3bNq1atUoHDx7U008/reuuu+6kjxmJRBSJRNKPA4HAaE4DmLKi8YT+cqhDz+1q1vO7mnW0ozfj+aJchy5dXK51Z1VozZxiuey2LLUUAAAAAAAAAMbGqIKStrY2xeNxlZeXZ6wvLy/X7t27h9znmmuuUVtbmy688EIZhqFYLKYvfOEL+vrXv37Sx9y0aZPuvvvu0TQdmLIOtYX04r5WbTvcqT/uaVFgQCF2R45Vq2cVaWVNgdbMKdF5MwuVYzup0kUAAAAAAAAAMCGNukbJaL3wwgv69re/re9///tavXq19u/fry9/+cu65557dMcdd5zUMTdu3KgNGzakHwcCAdXU1JyuJgMTXkt3WH/c06on3qjXywfaM54rynXovQvL9P7F5XrXvBJ5HGf8YwAAAAAAAAAAxq1RXSEtKSmRzWZTc3Nzxvrm5mZVVFQMuc8dd9yh6667Tp/97GclSUuXLlUoFNLnP/953XbbbSd1TKfTKafTOZqmA5NePGHof3a36MdbD+vP+9rS660Wac2cYp03s0gXzC3R2dMLKcQOAAAAAAAAAEmjCkocDofOOeccbdmyRVdccYUks/D6li1bdPPNNw+5T09Pj6zWzKF8bDaz7oFhGCd1TAD92oMR/fwvR/WzV2tV39Vfc2TZNJ/eu7BMHz+3RtUFFGIHAAAAAAAAgKGMesydDRs26IYbbtC5556rVatWafPmzQqFQrrpppskSddff72qq6u1adMmSdL69et17733auXKlemht+644w6tX78+HZic6JgAMhmGoddru/TYK0f01NuN6osnJEkFHruuOrdG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cz5Cjms6hIo9e/bos88+05133ums0YcR7MaPH6+JEyfqlltuUa9evXT77bfrvvvu04wZMyTRg88Fg5LzUFRUlPr27asVK1Y4az6fTytWrJDH4wlgZsB/16FDByUnJ/vV75EjR7Rx40anfj0ejw4fPqzy8nJnz8qVK+Xz+ZSZmdnoOSO8mJnGjBmjxYsXa+XKlerQoYNfvG/fvmratKlfDVdXV2vv3r1+NVxZWen3i0lJSYliY2NPu+gEGoPP51N9fT31i5CQlZWlyspKVVRUOEdGRoa8Xq/zmDpGKDl27Ji++eYbpaSk0IcREvr376/q6mq/ta+++krt2rWTxDUdQsfcuXOVmJio3NxcZ40+jGD366+/KiLC/0/6TZo0kc/nk0QPPieBvps8/hlFRUUWHR1t8+bNs507d9qoUaMsLi7OampqAp0aYEePHrWtW7fa1q1bTZI999xztnXrVtuzZ4+Zmc2cOdPi4uLsww8/tO3bt9t1111nHTp0sN9++815jcGDB1ufPn1s48aNtnbtWuvcubPdeuutgTolhJG77rrLLrzwQlu9erXt37/fOX799Vdnz+jRoy0tLc1WrlxpmzdvNo/HYx6Px4mfOnXKevbsaQMHDrSKigr7+OOPrXXr1vbQQw8F4pQQZiZOnGilpaW2e/du2759u02cONFcLpd9+umnZkb9IjRdeeWVVlBQ4DynjhHMxo0bZ6tXr7bdu3fbunXrLDs72xISEqy2ttbMqF8Ev02bNllkZKQ9/vjjtmvXLluwYIHFxMTY/PnznT1c0yHYNTQ0WFpamk2YMOG0GH0YwSwvL8/atGljy5Yts927d9sHH3xgCQkJ9uCDDzp76MF/DYOS89js2bMtLS3NoqKirF+/frZhw4ZApwSYmdmqVatM0mlHXl6emZn5fD6bPHmyJSUlWXR0tGVlZVl1dbXfa/z000926623WosWLSw2NtZGjBhhR48eDcDZINycqXYl2dy5c509v/32m919990WHx9vMTExdv3119v+/fv9Xue7776znJwcc7vdlpCQYOPGjbOTJ0828tkgHI0cOdLatWtnUVFR1rp1a8vKynKGJGbUL0LTnwcl1DGC2c0332wpKSkWFRVlbdq0sZtvvtm+/vprJ079IhR89NFH1rNnT4uOjrauXbvanDlz/OJc0yHYffLJJybptLo0ow8juB05csQKCgosLS3NmjVrZh07drSHH37Y6uvrnT304L/GZWYWkLeyAAAAAAAAAAAABBj3KAEAAAAAAAAAAGGLQQkAAAAAAAAAAAhbDEoAAAAAAAAAAEDYYlACAAAAAAAAAADCFoMSAAAAAAAAAAAQthiUAAAAAAAAAACAsMWgBAAAAAAAAAAAhC0GJQAAAAAAAAAAIGwxKAEAAAAQllwul5YsWRLoNAAAAAAEGIMSAAAAAI1u+PDhcrlcpx2DBw8OdGoAAAAAwkxkoBMAAAAAEJ4GDx6suXPn+q1FR0cHKBsAAAAA4Yp3lAAAAAAIiOjoaCUnJ/sd8fHxkn7/WKzCwkLl5OTI7XarY8eOWrRokd/XV1ZW6qqrrpLb7VarVq00atQoHTt2zG/PW2+9pR49eig6OlopKSkaM2aMX/zgwYO6/vrrFRMTo86dO2vp0qVO7Oeff5bX61Xr1q3ldrvVuXPn0wY7AAAAAEIfgxIAAAAAQWny5MkaOnSotm3bJq/Xq1tuuUVVVVWSpLq6Og0aNEjx8fEqKyvTwoUL9dlnn/kNQgoLC5Wfn69Ro0apsrJSS5cu1UUXXeT3PaZPn66bbrpJ27dv19VXXy2v16tDhw4533/nzp0qLi5WVVWVCgsLlZCQ0Hg/AAAAAACNwmVmFugkAAAAAISX4cOHa/78+WrWrJnf+qRJkzRp0iS5XC6NHj1ahYWFTuyyyy7TJZdcoldeeUWvv/66JkyYoO+//17NmzeXJC1fvlzXXHON9u3bp6SkJLVp00YjRozQY489dsYcXC6XHnnkET366KOSfh++tGjRQsXFxRo8eLCuvfZaJSQk6K233vqHfgoAAAAAggH3KAEAAAAQEP/617/8BiGS1LJlS+exx+Pxi3k8HlVUVEiSqqqqlJ6e7gxJJKl///7y+Xyqrq6Wy+XSvn37lJWV9R9z6N27t/O4efPmio2NVW1trSTprrvu0tChQ7VlyxYNHDhQQ4YM0eWXX/6XzhUAAABA8GJQAgAAACAgmjdvftpHYf1d3G73We1r2rSp33OXyyWfzydJysnJ0Z49e7R8+XKVlJQoKytL+fn5euaZZ/72fAEAAAAEDvcoAQAAABCUNmzYcNrzbt26SZK6deumbdu2qa6uzomvW7dOERER6tKliy644AK1b99eK1asOKccWrdurby8PM2fP18vvPCC5syZc06vBwAAACD48I4SAAAAAAFRX1+vmpoav7XIyEjnhukLFy5URkaGBgwYoAULFmjTpk168803JUler1dTp05VXl6epk2bph9//FH33HOPbr/9diUlJUmSpk2bptGjRysxMVE5OTk6evSo1q1bp3vuuees8psyZYr69u2rHj16qL6+XsuWLXMGNQAAAADOHwxKAAAAAATExx9/rJSUFL+1Ll266Msvv5QkTZ8+XUVFRbr77ruVkpKid999V927d5ckxcTE6JNPPlFBQYEuvfRSxcTEaOjQoXruueec18rLy9Px48f1/PPP64EHHlBCQoJuvPHGs84vKipKDz30kL777ju53W5dccUVKioq+hvOHAAAAEAwcZmZBToJAAAAAPi/XC6XFi9erCFDhgQ6FQAAAADnOe5RAgAAAAAAAAAAwhaDEgAAAAAAAAAAELa4RwkAAACAoMMnBAMAAABoLLyjBAAAAAAAAAAAhC0GJQAAAAAAAAAAIGwxKAEAAAAAAAAAAGGLQQkAAAAAAAAAAAhbDEoAAAAAAAAAAEDYYlACAAAAAAAAAADCFoMSAAAAAAAAAAAQthiUAAAAAAAAAACAsPVvXqmDQ6qefQsAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.8195097796484279\n",
      "precision: 0.2872340425531915\n",
      "recall: 0.49013417521704816\n",
      "auc: 0.7809256598736447\n",
      "F1: 0.36220472440944884\n",
      "ks: 0.41021208340759224\n",
      "最佳阈值:  0.17069898462935104\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9351    0.8580    0.8949     10850\n",
      "           1     0.2872    0.4901    0.3622      1267\n",
      "\n",
      "    accuracy                         0.8195     12117\n",
      "   macro avg     0.6112    0.6741    0.6285     12117\n",
      "weighted avg     0.8674    0.8195    0.8392     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_1] | best_t: 0.17069898462935104 F1: 0.36220472440944884 AUC: 0.7809256598736447 KS: 0.41021208340759224 Label1: 2162\n",
      "fold =  1 -----------------------------------------------------------------------------------------\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "Early stopping, best iteration is:\n",
      "[711]\ttraining's auc: 0.935725\tvalid_1's auc: 0.780183\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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39a8efOUm5urD3/4w4rFYic8jt1uz3husVhOGGoMt/1oa64AAAAAAAAAwJmWSBoK9fapvScz2GgP96V7fHT0mMFHeziqjnCfuqPxU3otrytHhR6HCgZN+aneHwUepwo8dpV4XSr1uVTocchqtZzms8XpckppwX333ae7775bjY2NWr58ue69996MngSD9fX1afPmzfr+97+vuro6LVy4UN/85jczhne64447dOedd2bst3DhwvRQU9OVw+FQIpE46XbPPfecrr322vSQV93d3Tpy5MgZbl0mv9+v0tJSvfjiizr//PMlSYlEQi+//LJWrFgxrm0BAAAAAAAAMPklk4ZZu6MnFXikQo908BGODQQiqcdgb9+Ye3tIZo+P/pAjP9Wjo8Bthh+FeeaywkFBSMDtkCPHevpPGlkx5qDk0Ucf1aZNm3T//fdr7dq12rJlizZs2KC9e/eqpKRkyPa33nqrHn74Yf3P//yPFi1apN/97ne67LLL9Pzzz2vlypXp7ZYsWaKnnnpqoGE5k7fHx+kya9Ysbd++XUeOHFFeXt6IvT3mz5+vxx57TBs3bpTFYtFtt92WleGuPv/5z2vz5s2aN2+eFi1apHvvvVcdHR2yWEhKAQAAAAAAgOku0pdQS1d0yDBWmY99gwKRPiVOJfWQ2dujIBV65LvtAyHIcT0+zEeHfK4crmNOY2NOI+655x5df/31uu666yRJ999/vx5//HE9+OCDuummm4Zs/8Mf/lC33HKLLr74YknS3/7t3+qpp57Sv/7rv+rhhx8eaEhOTrpoOUw33nijrrnmGp111lnq7e3V9773vWG3u+eee/TJT35S69evV1FRkb7yla8oFAqNc2ulr3zlK2psbNTVV18tm82mz3zmM9qwYYNsNsbRAwAAAAAAAKai7mhcLV1mwfK27qhau83hrdrCZiDS1h1VW3dMzV1RBXv7Tuk18pw5yvfYU6GHIx2AFHjMAKTAPVDoPN9jVyCX3h4YG4sxhiITsVhMbrdbP/vZz3TppZeml19zzTXq7OzUr371qyH7FBYW6lvf+pY+9alPpZddeeWVevbZZ9PDQ91xxx26++675ff75XK5tG7dOm3evFnV1dXDtiMajSoajaafh0IhVVVVKRgMyufzZWwbiUR0+PBhzZ49Wy6Xa7SnitMgmUxq8eLF+uhHP6q77rpr2G34fAAA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fv167du3T9dee60sFovuueeeUzomgEyJpKEXDrXpsZfr9OSuBoVjifS6c6oDuuycGXr/2eUq8Diy2EoAAAAAAAAAmHgshmEYY9lh7dq1Wr16tb773e9KkpLJpKqqqvT5z39eN91005Dtb7jhBu3evVtbt25NL/vyl7+s7du369lnnz2lYx4vFArJ7/crGAzK5/ON5XSASW1fU5cee7lOv9xZp8bQQC+t6gK3LltZqctWVmpWkSeLLQQAAAAAAACA8TeW3GBMPUpisZheeukl3XzzzellVqtVF154obZt2zbsPuvXr9fDDz+sHTt2aM2aNTp06JCeeOIJXXXVVad8zGg0qmh0oBB1KBQadjtgKkokDT2zv0Xf/b8DeuloR3q5z5WjS5ZX6IMrK7VqZr4sFksWWwkAAAAAAAAAk8OYgpLW1lYlEgmVlpZmLC8tLdWePXuG3eeKK65Qa2urzjvvPBmGoXg8rs9+9rP66le/esrH3Lx5s+68886xNB2Y9PY0hvTI9ho98XqDWrtjkiS7zaILFpbogysr9e7FJXLm2LLcSgAAAAAAAACYXMZco2Ssnn76aX3jG9/Qf/zHf2jt2rU6cOCAvvjFL+quu+7SbbfddkrHvPnmm7Vp06b081AopKqqqtPVZGDCaOmK6jev1usXO+v0el0wvdzrytFHz63S35w/RyU+VxZbCAAAAAAAAACT25iCkqKiItlsNjU1NWUsb2pqUllZ2bD73Hbbbbrqqqv06U9/WpJ09tlnKxwO6zOf+YxuueWWUzqm0+mU0+kcS9OBScEwDB1qDWvr7iZt3d2svxztUCJplhHKsVr0nrNKdfmaaq2bUyhHjjXLrQUAAAAAAACAyW9MQYnD4dCqVau0detWXXrppZLMwutbt27VDTfcMOw+PT09slozL+jabObwQIZhnNIxganEMAy9UR/SL3fW6andTTrS1pOxfkVVQJetrNQly8pVmEdACAAAAAAAAACn05iH3tq0aZOuueYanXvuuVqzZo22bNmicDis6667TpJ09dVXq7KyUps3b5Ykbdy4Uffcc49WrlyZHnrrtttu08aNG9OBycmOCUxFLV1R/fzlWj32cq32NXWnlztsVq2dU6C/WlSidy8qVXWhO4utBAAAAAAAAICpbcxBycc+9jG1tLTo9ttvV2Njo1asWKEnn3wyXYy9pqYmowfJ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",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.7835272757283156\n",
      "precision: 0.2600070846617074\n",
      "recall: 0.5788643533123028\n",
      "auc: 0.7801831886117809\n",
      "F1: 0.35883647030065996\n",
      "ks: 0.4268066980834995\n",
      "最佳阈值:  0.14395502295455503\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9425    0.8074    0.8698     10849\n",
      "           1     0.2600    0.5789    0.3588      1268\n",
      "\n",
      "    accuracy                         0.7835     12117\n",
      "   macro avg     0.6013    0.6932    0.6143     12117\n",
      "weighted avg     0.8711    0.7835    0.8163     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_2] | best_t: 0.14395502295455503 F1: 0.35883647030065996 AUC: 0.7801831886117809 KS: 0.4268066980834995 Label1: 2823\n",
      "fold =  2 -----------------------------------------------------------------------------------------\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "Early stopping, best iteration is:\n",
      "[472]\ttraining's auc: 0.90374\tvalid_1's auc: 0.767509\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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8vl8qqio0CWXXKLdu3fnbBONRvXZz35WpaWl8nq9+sAHPqD29vacbZqamvTud79bbrdbFRUV+ud//mclk8nJPBUgb/7t3/5Nq1atkt/vl9/v17nnnqsHH3ww+zyvIWBivvWtb8liseiLX/xidh2vI+D4br75ZlkslpzbsmXLss/zOgLGp7m5WR/96EdVWloql8ulM888U88//3z2ea41AMdWX18/6veRxWLRZz/7WUmT+/uI4GSG+uUvf6nNmzfra1/7ml588UWtXr1aGzduVEdHR76HBkwJ4XBYq1ev1p133jnm89/5znf0wx/+UHfddZeeeeYZeTwebdy4UdFoNLvNRz7yEe3YsUMPPfSQ/vu//1t//etf9elPf3qyTgHIu0cffVSf/exn9fTTT+uhhx5SIpHQRRddpHA4nN3mH//xH/XHP/5Rv/rVr/Too4+qpaVF73//+7PPp1Ipvfvd71Y8HteTTz6pn/70p7r33nt100035eOUgEk3Z84cfetb39ILL7yg559/Xm9729v03ve+Vzt27JDEawiYiOeee07/5//8H61atSpnPa8jYHxWrlyp1tbW7O3xxx/PPsfrCDi+3t5evfGNb1RhYaEefPBB7dy5U9///vdVXFyc3YZrDcCxPffcczm/ix566CFJ0qWXXippkn8fGZiR1q9fb3z2s5/NPk6lUkZNTY2xZcuWPI4KmJokGb/73e+yj9PptFFVVWV897vfza7r6+szHA6H8X//7/81DMMwdu7caUgynnvuuew2Dz74oGGxWIzm5uZJGzvw/7d357FRlW8bx6+pwwxTsLTYFUyxSC2bEGi1jkCItoFWokJQkTSmQAwpFKwJJiwRgbjgHwa3xDEgi0mJjSUBkbBYKDSRsGihUEKtoGVJoFREoCCWZe7fH9TzviO8Wvj5dgr9fpKTzDzPw5n7NFw59NycOW1JQ0ODSbKKigozu56bDh06WGlpqbOmpqbGJNmOHTvMzGz9+vUWERFh9fX1zppAIGBRUVHW1NTUugcAtBExMTH22WefkSHgFjQ2NlpqaqqVlZXZ8OHDraioyMw4FwEtNW/ePBs4cOBN58gR0DIzZ860oUOH/p/zXGsAbl1RUZE9+OCDFgwGW/18xB0nd6HLly+rsrJS2dnZzlhERISys7O1Y8eOMFYG3Bnq6upUX18fkqEuXbooMzPTydCO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",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.8206651811504497\n",
      "precision: 0.28865016347501166\n",
      "recall: 0.48738170347003157\n",
      "auc: 0.767509427521413\n",
      "F1: 0.36256966852449396\n",
      "ks: 0.396376281463962\n",
      "最佳阈值:  0.16968641378460073\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9348    0.8596    0.8957     10849\n",
      "           1     0.2887    0.4874    0.3626      1268\n",
      "\n",
      "    accuracy                         0.8207     12117\n",
      "   macro avg     0.6117    0.6735    0.6291     12117\n",
      "weighted avg     0.8672    0.8207    0.8399     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_3] | best_t: 0.16968641378460073 F1: 0.36256966852449396 AUC: 0.767509427521413 KS: 0.396376281463962 Label1: 2141\n",
      "fold =  3 -----------------------------------------------------------------------------------------\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "Early stopping, best iteration is:\n",
      "[393]\ttraining's auc: 0.887971\tvalid_1's auc: 0.776361\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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F2vjxo369ttvlZ2d3VynAPidkpIS5ebmas+ePSouLtatW7c0fPhwNTQ0WHteeuklbdiwQQUFBSopKdHZs2f15JNPWvWmpiaNGDFCN2/e1HfffadVq1Zp5cqVmjNnjjdOCWjxOnXqpIULF6qsrEz79+/XsGHDNHLkSB09elQSmQV83b59+/TJJ5+of//+HutkF/A9ffr00blz56xj586dVo3MAr7n0qVLSk5OVlBQkIqKilRZWal3331X4eHh1h6/vzZl0CINGjTI5ObmWs+bmppMhw4dzIIFC7zYFQBjjJFkCgsLredut9tER0ebt99+21q7fPmycTgcZu3atcYYYyorK40ks2/fPmtPUVGRsdls5syZM83WO+DP6urqjCRTUlJijPktp0FBQaagoMDaU1VVZSSZ3bt3G2OM2bRpkwkICDC1tbXWHpfLZUJDQ01jY2PzngDgp8LDw82nn35KZgEfV19fb2JjY01xcbEZOnSoycvLM8bwfgv4orlz55q4uLi71sgs4JumT59uBg8efM8616aM4RMlLdDNmzdVVlam1NRUay0gIECpqanavXu3FzsDcDc1NTWqra31yGybNm2UmJhoZXb37t0KCwtTQkKCtSc1NVUBAQEqLS1t9p4Bf3TlyhVJUtu2bSVJZWVlunXrlkd2e/bsqc6dO3tkt1+/foqKirL2pKWl6erVq9b/cAfwz2hqalJ+fr4aGhqUlJREZgEfl5ubqxEjRnhkVOL9FvBVx44dU4cOHdStWzdlZmbq1KlTksgs4KvWr1+vhIQEPf3002rfvr0GDBigZcuWWXWuTfHVWy3ShQsX1NTU5PGGI0lRUVGqra31UlcA7uX3XP5ZZmtra9W+fXuPemBgoNq2bUuugWbgdrs1depUJScnq2/fvpJ+y6XdbldYWJjH3j9m927Z/r0G4O9XUVGh1q1by+FwKCcnR4WFherduzeZBXxYfn6+Dhw4oAULFtxRI7uA70lMTNTKlSu1efNmuVwu1dTUaMiQIaqvryezgI/66aef5HK5FBsbqy1btmjixIl68cUXtWrVKklcm5KkQG83AAAA4Otyc3N15MgRj+9eBuCbevToofLycl25ckXr1q1TVlaWSkpKvN0WgHs4ffq08vLyVFxcrFatWnm7HQB/QUZGhvW4f//+SkxMVJcuXfTFF1/I6XR6sTMA9+J2u5WQ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",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.8282578195923084\n",
      "precision: 0.2992592592592593\n",
      "recall: 0.47791798107255523\n",
      "auc: 0.7763614768605924\n",
      "F1: 0.3680534467051321\n",
      "ks: 0.4171464872105847\n",
      "最佳阈值:  0.18032550534789735\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9344    0.8692    0.9006     10849\n",
      "           1     0.2993    0.4779    0.3681      1268\n",
      "\n",
      "    accuracy                         0.8283     12117\n",
      "   macro avg     0.6168    0.6736    0.6343     12117\n",
      "weighted avg     0.8679    0.8283    0.8449     12117\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_4] | best_t: 0.18032550534789735 F1: 0.3680534467051321 AUC: 0.7763614768605924 KS: 0.4171464872105847 Label1: 2025\n",
      "fold =  4 -----------------------------------------------------------------------------------------\n",
      "[LightGBM] [Warning] num_threads is set with n_jobs=24, nthread=24 will be ignored. Current value: num_threads=24\n",
      "Training until validation scores don't improve for 200 rounds\n",
      "Early stopping, best iteration is:\n",
      "[456]\ttraining's auc: 0.901756\tvalid_1's auc: 0.762246\n",
      "1\n"
     ]
    },
    {
     "data": {
      "image/png": "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vulNb5LFYjluueiii3JtDMPQjTfeqDlz5sjtduvCCy/U/v37T6VrGC2SqVHCiBIAAAAAAAAAAI4z6aDkF7/4hbZu3aovf/nLevbZZ7V27Vpt3rxZHR0dY7a/99571dramlt27dolm82mSy65JNfmW9/6lr773e/qjjvu0M6dO+X1erV582bFYrFTPzKYogQlAAAAAAAAAACMZ9JBya233qpPfepTuvLKK7Vy5Urdcccd8ng8uuuuu8ZsX15ertra2tzywAMPyOPx5IISwzC0fft2XX/99XrPe96jNWvW6Mc//rFaWlr061//+lUdHMSIEgAAAAAAAAAATmBSQUkikdAzzzyjCy+8cHgHVqsuvPBCPf744xPax5133qkPfehD8nq9kqTDhw+rra0tb5/BYFCbNm0ad5/xeFzhcDhvwTioUQIAAAAAAAAAwLgmFZR0dXUplUqppib/pHtNTY3a2tpO+vwnn3xSu3bt0ic/+cnctuzzJrPPbdu2KRgM5paGhobJHEZxISgBAAAAAAAAAGBcp1TM/VTdeeedWr16tTZu3Piq9nPdddcpFArllqNHj56mHs4yhiFFOs3bTL0FAAAAAAAAAMBxJhWUVFZWymazqb29PW97e3u7amtrT/jcaDSqn//85/rEJz6Rtz37vMns0+l0KhAI5C0YQ7xfSg6at70EJQAAAAAAAAAAjDapoMThcGj9+vXasWNHbls6ndaOHTt0/vnnn/C5v/zlLxWPx/WRj3wkb/vChQtVW1ubt89wOKydO3eedJ84iWwhd4dfcngK2xcAAAAAAAAAAKahksk+YevWrbr88su1YcMGbdy4Udu3b1c0GtWVV14pSfrYxz6m+vp6bdu2Le95d955py6++GJVVFTkbbdYLLr66qv1z//8z1q6dKkWLlyoG264QXV1dbr44otP/cggBeulj//RHFkCAAAAAAAAAACOM+mg5IMf/KA6Ozt14403qq2tTevWrdP999+fK8be1NQkqzV/oMrevXv1yCOP6I9//OOY+/ynf/onRaNRffrTn1ZfX59e97rX6f7775fL5TqFQ0KO3S3N21ToXgAAAAAAAAAAMG1ZDMMwCt2JVyscDisYDCoUClGvBAAAAAAAAACAIjeZ3GBSNUoAAAAAAAAAAABmE4ISAAAAAAAAAABQtAhKAAAAAAAAAABA0SIoAQAAAAAA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",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******************************\n",
      "accuracy: 0.7722020468801585\n",
      "precision: 0.24634726469588855\n",
      "recall: 0.5722178374112076\n",
      "auc: 0.7622460811878174\n",
      "F1: 0.34441805225653205\n",
      "ks: 0.39314634274630084\n",
      "最佳阈值:  0.1404520128329973\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9409    0.7956    0.8622     10849\n",
      "           1     0.2463    0.5722    0.3444      1267\n",
      "\n",
      "    accuracy                         0.7722     12116\n",
      "   macro avg     0.5936    0.6839    0.6033     12116\n",
      "weighted avg     0.8683    0.7722    0.8080     12116\n",
      "\n",
      "******************************\n",
      "[seed_24 fold_5] | best_t: 0.1404520128329973 F1: 0.34441805225653205 AUC: 0.7622460811878174 KS: 0.39314634274630084 Label1: 2943\n",
      "*******************************************************************************************************************\n",
      "******************************\n",
      "accuracy: 0.8149181301993926\n",
      "precision: 0.2803856203261555\n",
      "recall: 0.49100662669611866\n",
      "auc: 0.7734344568140648\n",
      "F1: 0.3569421345414922\n",
      "ks: 0.40258186741518925\n",
      "最佳阈值:  0.16964099527713056\n",
      "打印分类报告:                precision    recall  f1-score   support\n",
      "\n",
      "           0     0.9348    0.8528    0.8919     54246\n",
      "           1     0.2804    0.4910    0.3569      6338\n",
      "\n",
      "    accuracy                         0.8149     60584\n",
      "   macro avg     0.6076    0.6719    0.6244     60584\n",
      "weighted avg     0.8663    0.8149    0.8359     60584\n",
      "\n",
      "******************************\n",
      "耗时: 0:01:21.457734\n",
      "[平均评估] | F1: 0.3592 AUC: 0.7734 KS: 0.4087\n",
      "[全局评估] | F1: 0.3569 AUC: 0.7734 KS: 0.4026\n",
      "[1的个数]  | train: 11099/6338 test: 1099 best_t: 0.16964099527713056\n"
     ]
    }
   ],
   "source": [
    "set_model = 'lgb'\n",
    "save_path = None\n",
    "# save_path = 'model/' + set_model\n",
    "use_feats = X_train.columns.tolist()\n",
    "\n",
    "use_feats.remove('CUST_NO')\n",
    "use_feats.remove('FLAG')\n",
    "use_feats.remove('DATA_DAT')\n",
    "\n",
    "# for i in remove_cols:\n",
    "#     if i in use_feats:\n",
    "#        use_feats.remove(i)\n",
    "\n",
    "cate_cols = list(X_train.select_dtypes(\"category\").columns)\n",
    "\n",
    "set_parameters = {\n",
    "    'boosting_type': 'gbdt',\n",
    "    'objective': 'binary',\n",
    "    'metric': ['logloss', 'auc'],\n",
    "    'min_child_weight': 10,\n",
    "    'num_leaves': 2 ** 4,\n",
    "    'lambda_l1': 0.1,\n",
    "    'lambda_l2':10,\n",
    "    'feature_fraction': 0.8, \n",
    "    'bagging_fraction': 0.8, \n",
    "    'bagging_freq': 4,\n",
    "    'learning_rate': 0.01,\n",
    "    'seed': 2020,\n",
    "    'nthread': 24,\n",
    "    'n_jobs': 24,\n",
    "    'verbose': -1,\n",
    "}\n",
    "# 原本24\n",
    "res_dfs, print_auc = model_train(\n",
    "    X_train, X_test, y, use_feats, [], set_model=set_model, set_seeds=[24], set_parameters=set_parameters, set_fold=5, set_earlystop=200, save_path=save_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "id": "85b44468-c689-4872-867c-d548d50fa27f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T10:28:21.168571Z",
     "iopub.status.busy": "2024-11-13T10:28:21.168073Z",
     "iopub.status.idle": "2024-11-13T10:28:21.378723Z",
     "msg_id": "56252fb6-b1b2-45ba-a502-5edff86feae4",
     "shell.execute_reply": "2024-11-13T10:28:21.377976Z",
     "shell.execute_reply.started": "2024-11-13T10:28:21.168540Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "save path:  model/cat/cat_3_0.7775/\n"
     ]
    }
   ],
   "source": [
    "save_path = 'model/' + set_model\n",
    "save_res(res_dfs, save_path, set_model, print_auc, -np.inf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "id": "2c6846b4-9547-4d54-a40a-ebce1c755745",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T10:28:28.241914Z",
     "iopub.status.busy": "2024-11-13T10:28:28.241430Z",
     "iopub.status.idle": "2024-11-13T10:28:28.265827Z",
     "msg_id": "d43e44e6-9ce4-417e-87cb-b62b2b5c70df",
     "shell.execute_reply": "2024-11-13T10:28:28.265136Z",
     "shell.execute_reply.started": "2024-11-13T10:28:28.241884Z"
    }
   },
   "outputs": [],
   "source": [
    "pd.concat([X_test['CUST_NO'],res_dfs[0]['prediction_with_best_t']],axis=1).to_csv(r'./model/cat/cat_3_0.7775/result.csv',index=False,header=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "id": "2d4355e4-4542-4b87-931e-6eb88e0fd955",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T10:33:58.786432Z",
     "iopub.status.busy": "2024-11-13T10:33:58.785942Z",
     "iopub.status.idle": "2024-11-13T10:33:59.206672Z",
     "msg_id": "51689a7b-36db-420b-a350-81353289ef46",
     "shell.execute_reply": "2024-11-13T10:33:59.205904Z",
     "shell.execute_reply.started": "2024-11-13T10:33:58.786401Z"
    }
   },
   "outputs": [],
   "source": [
    "path = r'../contest'\n",
    "# ---------------------------  数据读取区域 ------------------------------\n",
    "X_test = pd.read_csv(path+r'/A/GTGSH_TARGET_A.csv')\n",
    "X_test['FLAG'] = np.nan\n",
    "X_train = pd.read_csv(path+r'/train/GTGSH_TARGET_TRAIN.csv')\n",
    "\n",
    "pd_lgb_oof = pd.read_csv(\"./submit/final_oof_y_20241113_0.3610_0.1805_1145_复现_A_lgb.csv\")\n",
    "\n",
    "pd_lgb2_oof = pd.read_csv(r'./model/lgb/lgb_1_0.7754/lgb_1_0.7754_oof.csv')\n",
    "pd_lgb2_oof = pd.concat([X_train['CUST_NO'],pd_lgb2_oof],axis=1)\n",
    "\n",
    "pd_cat_oof = pd.read_csv(r'./model/cat/cat_2_0.774/cat_2_0.774_oof.csv')\n",
    "pd_cat_oof = pd.concat([X_train['CUST_NO'],pd_cat_oof],axis=1)\n",
    "\n",
    "cat_oof = pd_cat_oof['oof']\n",
    "\n",
    "oof_merge = pd.merge(pd_cat_oof,pd_lgb_oof,how='left',on='CUST_NO')\n",
    "oof_merge = pd.merge(oof_merge,pd_lgb2_oof,how='left',on='CUST_NO')\n",
    "\n",
    "cat_oof = oof_merge['oof_x'].values\n",
    "lgb_oof = oof_merge['oof_y'].values\n",
    "lgb2_oof = oof_merge['oof'].values\n",
    "y = oof_merge['y_x'].values\n",
    "\n",
    "pd_predict_cat = pd.read_csv(r'./model/cat/cat_2_0.774/cat_2_0.774_pred.csv')\n",
    "pd_predict_cat = pd.concat([X_test['CUST_NO'],pd_predict_cat],axis=1)\n",
    "\n",
    "pd_predict_lgb2 = pd.read_csv(r'./model/lgb/lgb_1_0.7754/lgb_1_0.7754_pred.csv')\n",
    "pd_predict_lgb2 = pd.concat([X_test['CUST_NO'],pd_predict_lgb2],axis=1)\n",
    "\n",
    "\n",
    "pd_predict_lgb = pd.read_csv('./submit/final_prediction_20241113_0.3610_0.1805_1145_复现_A_lgb.csv')\n",
    "pd_predict_merge = pd.merge(pd_predict_cat,pd_predict_lgb,how='left',on='CUST_NO')\n",
    "pd_predict_merge = pd.merge(pd_predict_merge,pd_predict_lgb2,how='left',on='CUST_NO')\n",
    "# pd_predict_merge['out_prediction'] = 0.65*pd_predict_merge['prediction_y']+0.45*pd_predict_merge['prediction_x']\n",
    "\n",
    "pd_predict_merge['out_prediction'] = 0.66*pd_predict_merge['prediction_y']+0.44*pd_predict_merge['prediction_x']+0.10*pd_predict_merge['prediction']\n",
    "\n",
    "oof_merge['out_prediction'] = 0.66*oof_merge['oof_x']+0.44*oof_merge['oof_y']+0.44*oof_merge['oof']\n",
    "precisions, recalls, thresholds = precision_recall_curve(oof_merge['y_x'], oof_merge['out_prediction'])\n",
    "f1_scores = (2 * precisions * recalls) / (precisions + recalls)\n",
    "best_t = thresholds[np.argmax(f1_scores[np.isfinite(f1_scores)])]\n",
    "best_t = 0.190\n",
    "# pd_predict_merge[['CUST_NO','out_prediction']].to_csv(r'fusion_co_2_prediction.csv',index=False)\n",
    "\n",
    "test_pred = (pd_predict_merge['out_prediction'] >= best_t).astype(int)\n",
    "pd_predict_merge['out_pre_1'] = test_pred\n",
    "\n",
    "# pd_predict_merge[['CUST_NO','out_pre_1']].to_csv(r'./fusion_co_2.csv',index=False,header=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 246,
   "id": "19585413-8290-41b1-9fc3-ca1ccf014337",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T10:34:02.369585Z",
     "iopub.status.busy": "2024-11-13T10:34:02.368866Z",
     "iopub.status.idle": "2024-11-13T10:34:11.289442Z",
     "msg_id": "330c3fd4-1fa9-4f00-b852-0d205cf72a1b",
     "shell.execute_reply": "2024-11-13T10:34:11.288576Z",
     "shell.execute_reply.started": "2024-11-13T10:34:02.369555Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OOF 训练集的 AUC: 0.7852\n",
      "OOF 训练集的 F1 分数: 0.3654\n",
      "OOF 训练集的 KS 统计量: 0.4302\n",
      "使用的阈值: 0.1251\n",
      "权重比例参数Coefficients:[[5.08817227 1.77134185 1.37899557]]\n",
      "截距参数Coefficients:[-3.25643268]\n",
      "测试集最终预测概率:  [0.06996113 0.10438002 0.11707369 ... 0.07814638 0.04900479 0.33087948]\n",
      "测试集最终预测标签:  [0 0 0 ... 0 0 1]\n"
     ]
    }
   ],
   "source": [
    "# 基于逻辑回归的stacking，优势是不容易过拟合\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import roc_auc_score, f1_score\n",
    "from scipy.stats import ks_2samp\n",
    "import numpy as np\n",
    "\n",
    "def stacking_with_logistic_regression(lgb_oof, lgb2_oof ,cat_oof, lgb_prediction, lgb2_prediction, cat_prediction, y, threshold=None):\n",
    "    \"\"\"\n",
    "    使用逻辑回归作为元模型对堆叠特征进行五折交叉验证，并生成 OOF 预测结果和测试集预测结果。\n",
    "\n",
    "    参数:\n",
    "    - lgb_oof, xgb_oof, cat_oof: 各个模型在训练集上的 OOF 预测结果\n",
    "    - lgb_prediction, xgb_prediction, cat_prediction: 各个模型在测试集上的预测结果\n",
    "    - y: 训练集的标签\n",
    "    - threshold: 用于将预测概率转换为标签的阈值，默认为 None。如果为 None，则自动寻找使 F1 分数最大的阈值。\n",
    "\n",
    "    返回:\n",
    "    - auc_score: 训练集 OOF 的 AUC 分数\n",
    "    - f1_score: 训练集 OOF 的 F1 分数\n",
    "    - ks_stat: 训练集 OOF 的 KS 统计量\n",
    "    - best_threshold: 最优阈值\n",
    "    - test_prob: 测试集的预测概率\n",
    "    - test_pred: 测试集的预测标签（根据最优阈值转换）\n",
    "    \"\"\"\n",
    "\n",
    "    n_splits = 5\n",
    "\n",
    "    # 训练集堆叠特征\n",
    "    stacked_train_features = np.vstack((lgb_oof,lgb2_oof, cat_oof)).T\n",
    "\n",
    "    # 测试集堆叠特征\n",
    "    stacked_test_features = np.vstack((lgb_prediction,lgb2_prediction, cat_prediction)).T\n",
    "\n",
    "    # 初始化 OOF 预测结果和测试集预测的占位符\n",
    "    n_train = stacked_train_features.shape[0]\n",
    "    n_test = stacked_test_features.shape[0]\n",
    "\n",
    "    oof_train = np.zeros(n_train)  # OOF 预测概率\n",
    "    oof_test = np.zeros(n_test)    # 测试集预测概率\n",
    "    oof_test_skf = np.zeros((n_splits, n_test))  # 用于保存每折的测试集预测\n",
    "\n",
    "    # 使用五折交叉验证\n",
    "    kf = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=42)\n",
    "\n",
    "    for i, (train_index, val_index) in enumerate(kf.split(stacked_train_features, y)):\n",
    "        # 训练集和验证集划分\n",
    "        X_train, X_val = stacked_train_features[train_index], stacked_train_features[val_index]\n",
    "        y_train, y_val = y[train_index], y[val_index]\n",
    "\n",
    "        # 定义元模型\n",
    "        meta_model = LogisticRegression(\n",
    "            random_state=42,\n",
    "            C=80,\n",
    "            penalty='l2',\n",
    "            solver='lbfgs',\n",
    "            max_iter=200,    # 最大迭代次数\n",
    "            n_jobs=-1        # 并行处理\n",
    "        )\n",
    "\n",
    "        # 训练元模型\n",
    "        meta_model.fit(X_train, y_train)\n",
    "\n",
    "        # 在验证集上生成 OOF 预测概率\n",
    "        oof_train[val_index] = meta_model.predict_proba(X_val)[:, 1]\n",
    "\n",
    "        # 对测试集进行预测\n",
    "        oof_test_skf[i, :] = meta_model.predict_proba(stacked_test_features)[:, 1]\n",
    "\n",
    "    # 平均每折对测试集的预测结果\n",
    "    oof_test[:] = oof_test_skf.mean(axis=0)\n",
    "\n",
    "    # 计算 AUC 分数\n",
    "    auc_score = roc_auc_score(y, oof_train)\n",
    "\n",
    "    # 计算 KS 统计量\n",
    "    positive_probs = oof_train[y == 1]\n",
    "    negative_probs = oof_train[y == 0]\n",
    "    ks_stat, p_value = ks_2samp(positive_probs, negative_probs)\n",
    "\n",
    "    # 如果没有指定阈值，则自动寻找使 F1 分数最大的阈值\n",
    "    if threshold is None:\n",
    "        # thresholds = np.linspace(0, 1, 1000)\n",
    "        # f1_scores = []\n",
    "        # for thresh in thresholds:\n",
    "        #     oof_pred = (oof_train >= thresh).astype(int)\n",
    "        #     f1 = f1_score(y, oof_pred)\n",
    "        #     f1_scores.append(f1)\n",
    "        # best_idx = np.argmax(f1_scores)\n",
    "        # best_threshold = thresholds[best_idx]\n",
    "        # best_f1 = f1_scores[best_idx]\n",
    "\n",
    "        \n",
    "        precisions, recalls, thresholds = precision_recall_curve(y, oof_train)\n",
    "        f1_scores = (2 * precisions * recalls) / (precisions + recalls)\n",
    "        \n",
    "        best_threshold = thresholds[np.argmax(f1_scores[np.isfinite(f1_scores)])]\n",
    "        y_1 = [1 if x >= best_threshold else 0 for x in oof_train]\n",
    "        best_f1 = f1_score(y, y_1)\n",
    "    else:\n",
    "        best_threshold = threshold\n",
    "        # 将 OOF 预测概率转换为二进制标签\n",
    "        oof_pred = (oof_train >= threshold).astype(int)\n",
    "        # 计算 F1 分数\n",
    "        best_f1 = f1_score(y, oof_pred)\n",
    "\n",
    "    print(f\"OOF 训练集的 AUC: {auc_score:.4f}\")\n",
    "    print(f\"OOF 训练集的 F1 分数: {best_f1:.4f}\")\n",
    "    print(f\"OOF 训练集的 KS 统计量: {ks_stat:.4f}\")\n",
    "    print(f\"使用的阈值: {best_threshold:.4f}\")\n",
    "\n",
    "    print(f\"权重比例参数Coefficients:{meta_model.coef_}\")\n",
    "    print(f\"截距参数Coefficients:{meta_model.intercept_}\")\n",
    "\n",
    "    # 将测试集预测概率转换为二进制标签\n",
    "    test_pred = (oof_test >= 0.1255).astype(int)\n",
    "    # 返回 AUC 分数、F1 分数、KS 统计量、最优阈值、测试集预测概率和预测标签\n",
    "    return auc_score, best_f1, ks_stat, best_threshold, oof_test, test_pred\n",
    "\n",
    "cat_predict = pd_predict_merge['prediction_x'].values\n",
    "lgb_predict = pd_predict_merge['prediction_y'].values\n",
    "lgb2_predict = pd_predict_merge['prediction'].values\n",
    "\n",
    "\n",
    "# 调用函数\n",
    "auc_score, f1, ks_stat, best_threshold, test_prob, test_pred = stacking_with_logistic_regression(\n",
    "    lgb_oof=lgb_oof,\n",
    "    lgb2_oof=lgb2_oof,\n",
    "    cat_oof=cat_oof,\n",
    "    lgb_prediction=lgb_predict,\n",
    "    lgb2_prediction=lgb2_predict,\n",
    "    cat_prediction=cat_predict,\n",
    "    y=y,\n",
    "    threshold=None  # 如果想手动指定阈值，可以在此处设置，例如 threshold=0.5\n",
    ")\n",
    "\n",
    "print(\"测试集最终预测概率: \", test_prob)\n",
    "print(\"测试集最终预测标签: \", test_pred)\n",
    "\n",
    "# 0.1251 0.1255  0.390024"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "id": "5176fea8-8f90-46ae-822a-b0353f7129d5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-11-13T10:34:18.146015Z",
     "iopub.status.busy": "2024-11-13T10:34:18.145509Z",
     "iopub.status.idle": "2024-11-13T10:34:18.189183Z",
     "msg_id": "ea2d3683-a04c-42ed-b697-5b4c4c5c1f3b",
     "shell.execute_reply": "2024-11-13T10:34:18.188485Z",
     "shell.execute_reply.started": "2024-11-13T10:34:18.145978Z"
    }
   },
   "outputs": [],
   "source": [
    "final_predict = pd_predict_merge['CUST_NO']\n",
    "final_predict = final_predict.to_frame()\n",
    "final_predict['predict'] = test_pred \n",
    "cust_no = pd.read_csv('../contest/A/GTGSH_TARGET_A.csv')\n",
    "cust_no = pd.merge(cust_no,final_predict,how='left',on='CUST_NO')\n",
    "predict = cust_no[['CUST_NO','predict']]\n",
    "predict.to_csv(r'./A榜结果.csv',index=False,header=None)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
